在这里给出这个查询,
let output = [];
const sql = `select * from coredb.account LIMIT ${offset},${limit}`;
let data = await sequelize.query(sql, null, {raw: true, type: sequelize.QueryTypes.SELECT});
data.forEach((item) => {
console.log(item['id'], item.id); // <-- output says "undefined, undefined"
});在使用console.log检查data变量时,它确实包含了正确的行数据。
但是,当我尝试访问各个属性时,它们只返回为undefined。这个序列化似乎返回结果的TextRow对象似乎不想让我访问显式的行。
只是好奇我错过了什么,我是不是错过了一个选项?
发布于 2019-06-12 03:29:13
当我尝试这样做时,"data“是一个包含两个对象的数组,每个对象都是查询结果。因此,可以使用index ...来访问这些属性。例如:
data[0].forEach((item) => {
console.log(item['id'], item.id); // <-- output says "undefined, undefined"
});还不确定为什么会发生这种情况!
编辑-这是因为.query()应该只有两个参数。将调用更改为:sequelize.query(sql, {raw: true, type: sequelize.QueryTypes.SELECT})会导致数据成为单个数组(不出所料)。
发布于 2020-03-07 06:23:58
我同意,Sequalize原始查询并不直观。You don't need null或raw: true标志。像这样的东西应该是有效的:
let data = await sequelize.query(sql, {type: sequelize.QueryTypes.SELECT});发布于 2020-04-08 00:58:12
最后,我终于找到了解决方案。您只需要创建一个新的数组,并通过如下所示的键名查找基数来将数据推入其中:假设我们在students对象中有数据:
let finalArray = new Array();
for (var k in students ) {
finalArray.push(students[k])
}
console.log(finalArray) // Normal JSON array object :)https://stackoverflow.com/questions/56534095
复制相似问题