如何在express中添加要通过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

例如,我有一个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 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;