首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >序列化原始查询TextRow并从中获取数据

序列化原始查询TextRow并从中获取数据
EN

Stack Overflow用户
提问于 2019-06-11 06:05:50
回答 3查看 3K关注 0票数 3

在这里给出这个查询,

代码语言:javascript
运行
复制
        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对象似乎不想让我访问显式的行。

只是好奇我错过了什么,我是不是错过了一个选项?

EN

回答 3

Stack Overflow用户

发布于 2019-06-12 03:29:13

当我尝试这样做时,"data“是一个包含两个对象的数组,每个对象都是查询结果。因此,可以使用index ...来访问这些属性。例如:

代码语言:javascript
运行
复制
data[0].forEach((item) => {
   console.log(item['id'], item.id); // <-- output says "undefined, undefined"
});

还不确定为什么会发生这种情况!

编辑-这是因为.query()应该只有两个参数。将调用更改为:sequelize.query(sql, {raw: true, type: sequelize.QueryTypes.SELECT})会导致数据成为单个数组(不出所料)。

票数 2
EN

Stack Overflow用户

发布于 2020-03-07 06:23:58

我同意,Sequalize原始查询并不直观。You don't need nullraw: true标志。像这样的东西应该是有效的:

代码语言:javascript
运行
复制
let data = await sequelize.query(sql, {type: sequelize.QueryTypes.SELECT});
票数 2
EN

Stack Overflow用户

发布于 2020-04-08 00:58:12

最后,我终于找到了解决方案。您只需要创建一个新的数组,并通过如下所示的键名查找基数来将数据推入其中:假设我们在students对象中有数据:

代码语言:javascript
运行
复制
    let finalArray = new Array();
    for (var k in students ) {
      finalArray.push(students[k])
    }

 console.log(finalArray) // Normal JSON array object :)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56534095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档