Node.js和使用Mongoose的MongoDB。使用findByIdAndUpdate vs Manual
使用findByIdAndUpdate并手动执行有什么缺点吗。我注意到findByIdAndUpdate删除了我的mongo连接,并读到您应该尝试保持连接打开,只有在您关闭应用程序时才关闭连接。是这样的吗?如果是这样的话,是否有一个我没有看到的用于findByIdAndUpdate的配置设置可以保持连接Node.js和使用Mongoose的MongoDB。使用findByIdAndUpdate vs Manual,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,使用findByIdAndUpdate并手动执行有什么缺点吗。我注意到findByIdAndUpdate删除了我的mongo连接,并读到您应该尝试保持连接打开,只有在您关闭应用程序时才关闭连接。是这样的吗?如果是这样的话,是否有一个我没有看到的用于findByIdAndUpdate的配置设置可以保持连接 updateItemById: function(id, updateObj, options, callback){ //OPTION 1 Badge.findById(id,
updateItemById: function(id, updateObj, options, callback){
//OPTION 1
Badge.findById(id, null , function(err, doc){
doc.update(updateObj, function(err, numberAffected, raw){
if (err) return handleError(err);
Badge.findById(id, null , function(err, doc){
callback(doc);
});
});
});
//OPTION 2
Badge.findByIdAndUpdate(id, updateObj, options, function(err, data){
callback(doc);
});
}
findbyiandupdate
应该更快(只要驱动程序和猫鼬正确编程),因为:
选择1:
- 按ID获取对象
- 将其转换为JavaScript对象
- 更新客户端中的对象
- 发送回数据库
- 计算并保存更改
- 寄回去
- 转换为JavaScript对象
- 在数据库中查找文档
- 作为原子操作计算并应用更改
- 发回对象
- 转换为JavaScript对象
好处:代码可读性更强。我选择了选项2。不管出于什么原因,我认为我的关系正在结束,但事实似乎并非如此。谢谢你的意见。