在 Sequelize Model.create 上设置 raw = true

Posted

技术标签:

【中文标题】在 Sequelize Model.create 上设置 raw = true【英文标题】:Set raw = true on Sequelize Model.create 【发布时间】:2018-01-15 18:13:22 【问题描述】:

我希望在 Sequelize 上调用 Model.create 后能够接收普通的原始对象,即创建的对象本身,没有元数据或任何其他内容。就像Model.find 中的raw: true 选项一样。

我已经看到了这个答案: Setting all queries to raw = true sequelize, 不,Model.create(name: 'test', raw: true) 不起作用。

谢谢

【问题讨论】:

使用model.toObject函数:http://mongoosejs.com/docs/api.html#document_Document-toObject 谢谢你。但那是针对猫鼬的,但我找到了一种类似的方法来续集model.get,我将其发布为答案。谢谢 【参考方案1】:

我来得太晚了,但也许这会帮助其他人像我一样搜索这个。

在您的查询选项中,而不是

raw: true

试试

plain: true

为我工作

我认为这也是一个选项,您可以将其传递给与数据库的 sequelize 连接,以便让您以普通/原始的形式返回:

类似的东西:

.... new Sequelize('dbUrl',query:raw:true, plain:true, logging: false);

干杯!

【讨论】:

【参考方案2】:
Model.create(modelObject)
.then((resultEntity) => 
    const dataObj = resultEntity.get(plain:true)

如前所述,或者如果您想使用 async/await 语法,请使用:

const myResultVar = (await Model.create(modelObject)).get(plain:true)

基本上是一样的,只是没有留下 async/await 语法:)

【讨论】:

嗨 :) 您不需要重复其他答案。您的替代选项足以单独编写为答案。【参考方案3】:

您还可以对从查询返回的模型实例使用 .toJSON()。 http://docs.sequelizejs.com/class/lib/model.js~Model.html#instance-method-toJSON

【讨论】:

感谢 Kevin,找到内置解决方案,并作为答案发布 我注意到.toJSON() 返回整个对象?你知道如何将它与attributes 配对以过滤返回的内容吗?【参考方案4】:

非常感谢您的帮助。我找到了一个解决方案,虽然这不是我想要的,但它有效,而且仍然很好。

sequelize 实体有一个.get() 方法来返回纯对象版本。所以它是这样的:

Model.create(modelObject)
.then((resultEntity) => 
    const dataObj = resultEntity.get(plain:true)

来自此线程:Sequelize, convert entity to plain object。寻找 CharlesA 的答案。

尚未尝试使用数组,但如果您对结果数组有疑问,请检查其 cmets 及其旁边的答案。 但由于.create() 只返回一个对象,它对我有用。无论如何,如果您使用.findAll(),则应使用raw: true 选项而不是此解决方案,因为它适用于该方法。

附:如果有人仍然有一个解决方案,其中 Sequelize 本身不会返回那个大的 resultEntity 对象,而只是简单的数据对象,就像 raw: true 选项一样(因为我认为这仍然更轻?),我们是开放的。

非常感谢。

【讨论】:

为什么 Sequelize 不实现 raw: true 来创建?!

以上是关于在 Sequelize Model.create 上设置 raw = true的主要内容,如果未能解决你的问题,请参考以下文章

Django - 覆盖 Model.create() 方法?

传递文档数组时,Mongoose 中 Model.create 的原子性

传递文档数组时,Mongoose 中 Model.create 的原子性

MongooseJS - 具有现有引用的Model.create

Mongoose:Model.create 和 Collection.insert 有啥区别

Node/Express 和 MongoDB:Async/Await 与 Model.create()