如何在express中添加要通过sequelize对象传递的附加属性
例如,我有一个sequelize模型,如下所示:如何在express中添加要通过sequelize对象传递的附加属性,express,pug,sequelize.js,Express,Pug,Sequelize.js,例如,我有一个sequelize模型,如下所示: // MyModel.js module.exports = (sequelize, DataTypes) => { const MyModel = sequelize.define('MyModel',{ foo: DataTypes.STRING, }); return MyModel } app.get('/foobar',async function(req,res,next){ var myMo
// MyModel.js
module.exports = (sequelize, DataTypes) => {
const MyModel = sequelize.define('MyModel',{
foo: DataTypes.STRING,
});
return MyModel
}
app.get('/foobar',async function(req,res,next){
var myModel = await MyModel.findById('abcd1234');
myModel.bar = bar
return res.render('foobar',{
myModel: myModel
});
})
然后,我使用此模型表示使用控制器的模板引擎,如下所示:
// MyModel.js
module.exports = (sequelize, DataTypes) => {
const MyModel = sequelize.define('MyModel',{
foo: DataTypes.STRING,
});
return MyModel
}
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的字段,我如何通过我的模型从控制器传递这个额外的计算字段?这背后的原因是:
要实现这一点,请将实例转换为JSON对象
是sequelizejs模型的方法,您也可以通过javascript函数进行转换
如果要保留sequelize对象,请将其保留在其他变量中
这些都是可能的做法,但由于缺乏
需求和代码这是我能建议的最好的,你仍然可以
如果需要内部的额外字段,请查看
例如
但是我想保留sequelize对象,我知道您可以首先使用convert to JSON克服它,但是我想向sequelize添加新的属性权限object@HansYulian,只有在仍然需要执行sequelize操作时才需要实例,得到结果后,就像你现在得到的记录,你想更新或删除你可以通过实例,但我看不到任何要求,通过你的代码。我真正的代码是保密的,我不能在这里分享,但我只是解决我面临的问题here@HansYulian,请检查更新的答案,我想这对你有帮助。不,还是没有,我将需要计算一些字段后,记录是采取,然后我需要使用记录的地方进一步的行动。让我给你举个例子:myModel.canEdit=myModel.isActive&&myModel.totalContribution<100,检索此记录后,如果它是可编辑的,我可能会更新它,或者我只是将其返回到UI。我知道我可以返回UI来显示编辑按钮,并在它之前进行处理,但这意味着双重工作
var myModelInstance = await MyModel.findById('abcd1234');
var myModel = myModelInstance.get({plain: true});
// OR
var myModel = myModelInstance.toJSON();
// Now this will work
myModel.bar = bar;