如何避免mongoosefind同一个文件?

我是新来的mongoose所以请原谅我,如果这听起来很愚蠢。

对于每一个编辑,我想存储历史价值,并修改我collections的现有价值。 所以这是代码

collection.findById(type_id).select({ "history": 0 }) .then(function(data){ var changes = { data : data, by : user_id } return collection.findOneAndUpdateAsync({_id:type_id}, {$push: {"history": changes }}) }) .then(function(data){ return collection.findOneAndUpdateAsync({_id:type_id}, info) }) .then(function(res){ resolve(res) }) 

这段代码工作得很好,但我不想为同一个集合进行多次查找。 如果你能提出更好更有效的build议,那将会很棒。

提前致谢。 🙂

在primefaces更新中,我不认为这是可能的。 您可以做的最好的方法是将对服务器的调用次数减less到两次:第一次调用是使用findByIdAndUpdate()new选项设置为false(默认值)的更新,这将允许您在更新之前访问数据。 然后,您可以使用第二个电话来更新此数据的历史logging。 例如:

 collection.findByIdAndUpdateAsync(type_id, info /*, { "new": false } */) .then(function(data){ var changes = { "data": data, "by": user_id }; return collection.findByIdAndUpdateAsync( type_id, { "$push": { "history": changes } }, { "new": true } ); }) .then(function(res){ resolve(res) });