首页 文章

如何在Sequelize中将数据作为JSON返回

提问于
浏览
7

当我创建一个Sequelize查询时,它返回给我一个对象(或数组),我猜测它是一个Sequelize模型(或模型数组(一个集合类型??))但它没有在任何地方记录,所以我只是猜测 . 我总是希望结果是JSON . 我可以在查询中传递任何强制执行此操作的内容吗?如果可能的话,我宁愿不按摩每一个结果,我会回到JSON .

The documentation显示此命令返回一个字符串:

console.log(JSON.stringify(users))

所以有's some built in serialization. Right now I'm这样做,使用未记录的 toJSON() 方法:

query().then(function(result) {
    if(result.length) {
        return result.toJSON();
    } else {
        return result.map(function(item) {
            return item.toJSON();
        });
    }
});

这很麻烦 .

3 回答

  • 3

    您可以在查询中使用 raw: true ,但这并不总是像您期望的那样,特别是对于关联 .

    query({
        // ...
        raw: true
    }).then(function(result) {
        // Result is JSON!
    });
    

    但是,在您使用关联的情况下,您可能会得到以下内容:

    {
        foo: true,
        "associated.bar": true
    }
    

    而不是你可能期望的:

    {
        foo: true,
        associated: {
            bar: true
        }
    }
    
  • 8

    从数据库中检索模型时,可以在结果上调用 .get({ plain: true}) ,它将为您处理转换 . 您可以将函数调用的值赋给变量 . 例如

    ..).then(function(user){ var _user = user.get({ plain: true}); console.log(_user); //Should be valid json object });

    希望这可以帮助 .

  • 7

    如果您正在进行具有多个结果的查询,则应该期望返回一个数组 . 您应该发现结果数组中的每个元素都是JSON对象 .

    您应该能够访问这样的给定字段: result[0].myfieldname

相关问题