假设我有一个文档,例如:var doc = Model.findOne({name:"name"});
如果该文档在另一个连接上被编辑,则doc将不包含正确的信息。 我需要它,所以我必须从数据库中“刷新”或“重新下载”它。 是否有任何方法仅使用对象“doc”来实现这一点?
如果该文档在另一个连接上被编辑,则doc将不包含正确的信息。 我需要它,所以我必须从数据库中“刷新”或“重新下载”它。 是否有任何方法仅使用对象“doc”来实现这一点?
doc
包含需要刷新的文档实例,您可以按照以下方式进行通用刷新:doc.model(doc.constructor.modelName).findOne({_id: doc._id},
function(err, newDoc) {
if (!err) {
doc = newDoc;
}
}
);
然而,最好不要在不需要的情况下持久化/缓存Mongoose文档实例。只需缓存您需要快速访问的文档的不可变_id
,而不是文档本身。
doc.save(function (err, _doc) {
if (err) {
if (err.some_error_property_telling_you_version_was_wrong) {
// Do your business here
// Refresh your object
// Model.findById(doc._id, function (err, _refreshed_doc) {});
// doc = _refreshed_doc;
// doc.set('property', value); set the value again
// Then re-save? or maybe make this a recursive function,
// so it can keep trying to save the object?
} else {
// Handle it like a normal error
}
}
});
let
定义的,你可以直接这样做。await thing.update(stuff);
thing = await Thing.findById(thing._id);
const
,那么以不可变的方式进行操作:await thing.update(stuff);
const updatedThing = await Thing.findById(thing._id);