Возможно ли обновить документ с поста save
mongoose middleware? Потому что это не работает для меня.
Я пробовал по-разному.
Способ 1:
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: потому что он содержит идентификатор сохраненного объекта, поэтому я попытался напрямую.
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 генерируется из автоинкремента mongoose, который требует числового поля. и я также сохраняю строковую версию quoteNumber в поле quoteString, чтобы в пользовательском интерфейсе я мог выполнять поиск регулярных выражений в автозаполнении. Как регулярное выражение не работает с типом числа.
любые предложения будут полезны. Спасибо.