我最近发现如何在使用Keystone JS(How to alter a value before storing it to the database in Keystone JS)时更改现有属性的值并将其保存到mongo数据库中。在Keystone'保存'后向mongo添加一个新属性
现在我需要添加一个新属性,并在同一pre('save')
阶段将其保存到数据库。
其目的是说,如果游戏的结果(现有属性)是'Won',那么添加一个新的属性'won',这是一个布尔值(真)。如果它的事项,我想这样做的原因是因为在车把模板我想说{{#if won}}class="success"{{/if}}
Game.schema.pre('save', function(next) {
if (this.isModified('result')) {
if (this.result === 'Won') {
this.won = true;
}
}
next()
});
但没有任何反应。我读过你不能添加属性,除非它们已经在模式中设置。所以我试着在上面加上Game.schema.set('won', false);
,但还是没有。
有没有简单的方法来做到这一点?
谢谢,这看起来很有趣。 'locals.won'将在整个结果上设置,而不是每个结果。会有一种方法来循环每个结果并为每个结果添加属性到当地人吗? – davidpauljunior
我编辑了我的答案来查找多个游戏,并将** won **属性添加到每个游戏中。希望这可以帮助。 –