【发布时间】:2019-01-31 01:19:43
【问题描述】:
是否可以从save mongoose 中间件的帖子中更新文档?因为它不适合我。
我尝试过不同的方法。
方式一:
QuoteSchema.post('save', function(doc) {
if (doc.quoteString) {
return;
}
this.quoteString = doc.quoteNumber + "";
this._doc.quoteString = doc.quoteNumber + "";
// update the record with quoteString
this.update({ _id: this.id }, this, { new: true }, function(err, result) {
if (!err) {
console.log("Document Updated");
}
});
console.log('post save', doc.quoteString);
});
方式2:因为里面包含了保存的对象id所以直接试了。
QuoteSchema.post('save', function(doc) {
if (doc.quoteString) {
return;
}
this.quoteString = doc.quoteNumber + "";
this._doc.quoteString = doc.quoteNumber + "";
enter code here
// update the record with quoteString
this.update(function(err) {
if (!err) {
console.log("Document Updated");
}
});
console.log('post save', doc.quoteString);
});
方式3:
QuoteSchema.post('save', function(doc) {
if (doc.quoteString) {
return;
}
var _quoteString = doc.quoteNumber+"";
this.update({ _id: doc._id }, { $set: { "quoteString": _quoteString } }, function(err) {
if (!err) {
console.log("Document Updated");
}
});
console.log('post save', doc.quoteString);
});
这些方法都不适合我。
我所要做的就是在保存后更新 QuoteNumber 字段。 QuoteNumber 是从需要数字字段的猫鼬自动增量生成的。我还在 quoteString 字段中保存了 quoteNumber 的字符串版本,以便在 UI 中,我可以在自动完成中执行正则表达式搜索。由于正则表达式不适用于数字类型。
任何建议都会有所帮助。谢谢。
【问题讨论】:
标签: node.js mongodb mongoose middleware mongoose-schema