将所有查询设置为 raw = true sequelize

16

我非常喜欢在我的Node应用程序中使用Sequelize作为ORM,但现在,当您进行查询时,默认情况下它们会传递DAO对象,这让我有点烦恼。我怎样才能始终将raw选项设置为true?


2
你的标题说:设置raw = true,而你的问题问如何设置raw = false... - xShirase
2个回答

26
根据文档

如果您提供的SQL语句除了SQL之外没有其他参数,则假定为raw为真,Sequelize不会尝试对查询结果进行任何格式化。

也就是说:

Sequelize对象有一个[options.query={}]可选参数,用于设置sequelize.query的默认选项。来源

您应该能够使用:

var sequelize = new Sequelize('database', 'username', 'password', {query:{raw:true}})

哇,这非常有帮助,但我还有一个问题,当我使用create时,仍然存在DAO对象,即使我在find中使用了query raw: true也没有影响。示例代码: Model.create({name: 'test'}, {options: raw: true}) - mateeyow
尝试运行代码:Modelgroup.create(test, {raw: true}) - xShirase
https://github.com/sequelize/sequelize/wiki/API-Reference-Model#createvalues-options----promiseinstance - xShirase
你编辑了你的评论... Model.create({name: 'test'}, {raw: true}) 应该可以工作。 - xShirase
嗯,问题“将所有查询设置为 raw = true”的答案已经回答了,也许可以针对 Model.create() 提出一个具体的问题。 你确定 Model.create({name: 'test'}, {raw: true}) 不起作用吗? - xShirase
请注意,这将绕过sequelize模型转换。例如,使用raw选项时,TINYINT将返回为0/1,而不是true/false。 - Kyle Roach

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接