gpt4 book ai didi

express - 如何在express中添加要通过sequelize对象传递的其他属性

转载 作者:行者123 更新时间:2023-12-03 22:27:29 25 4
gpt4 key购买 nike

例如,我有一个 Sequelize 模型,如下所示:

// MyModel.js
module.exports = (sequelize, DataTypes) => {
const MyModel = sequelize.define('MyModel',{
foo: DataTypes.STRING,
});

return MyModel
}

然后我使用这个模型来表达使用 Controller 的模板引擎,如下所示:
app.get('/foobar',async function(req,res,next){
var myModel = await MyModel.findById('abcd1234');
myModel.bar = bar
return res.render('foobar',{
myModel: myModel
});
})

我的 foobar.pug 是这样的:
html
#{JSON.stringify(myModel)}

显然我可以找到名为 foo 的字段,但我无法找到名为 bar 的字段,如何将这个额外的计算字段从我的 Controller 传递到我的模型?

最佳答案

这背后的原因是:

var myModel = await MyModel.findById('abcd1234'); 
// will return an instance of MyModel not json

// So you can't just do
myModel.bar = bar;

实现它(将实例转换为 JSON 对象)
var myModel = await MyModel.findById('abcd1234').toJSON();
// Now this will return the JSON object and not instance of MyModel

// Now this will work
myModel.bar = bar;

toJSON() 是 sequelizejs 的模型方法,你也可以通过 javascript 函数转换它。

如果要保留 sequelize 对象,请将其保留在不同的变量中
var myModelInstance = await MyModel.findById('abcd1234');

var myModel = myModelInstance.get({plain: true});
// OR
var myModel = myModelInstance.toJSON();

// Now this will work
myModel.bar = bar;

These are the possible ways of doing , but because of lack of requirement and code this is the best I can suggest , you can still look into GETTER , if you need the extra fields inside instance.

关于express - 如何在express中添加要通过sequelize对象传递的其他属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52851122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com