mongoose更新對象的兩種方法示例比較
前言
Mongoose是在node.js異步環(huán)境下對mongodb進行便捷操作的對象模型工具
那么要使用它,首先你得裝上node.js和mongodb,關于mongodb的安裝和操作介紹可以參考:http://www.dbjr.com.cn/article/80296.htm
演示

描述場景
更新購物車數(shù)量與勾選狀態(tài)
業(yè)務邏輯
查詢到當前用戶的購物車對象Cart,更新前端傳遞過來的quantity與selected字段
方法一
var _ = require('underscore');
Cart.findOneAndUpdate({
_id: req.body.cart._id,
user: user
}, _.pick(req.body.cart, 'quantity', 'selected'), {
new: true
},
function(err, updatedCart) {
res.send(
utils.json({
data: updatedCart
})
);
}
);
注:_.pick相當于
{
quantity: req.body.cart.quantity,
selected: req.body.cart.selected
}
方法二
var _ = require('underscore');
Cart.findOne({
_id: req.body.cart._id,
user: user
}, function(err, cart) {
if (err) {
console.log(err);
}
// 復制對象
_.extend(cart, req.body.cart);
cart.save(function(err, updatedCart) {
res.send(
utils.json({
data: updatedCart
})
);
});
}
);
對比
第一種代碼使用findOneAndUpdate只用了一步,更加簡潔,適用于更新的字段少且非常明確的場景
第二種先findOne再對entity進行save操作,利用了underscore對象復制,面向整個對象操作更加靈活,適用于字段多且不確定的場景
結論
需求總是在變的,所以我一般采用第二種。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
npm報錯:request to httpsregistry.npm.taobao.org 
Node.js報錯信息Error:?Cannot?find?module?'XXX'問題及解
nodejs使用readline逐行讀取和寫入文件的實現(xiàn)
Node.js調用fs.renameSync報錯(Error: EXDEV, cross-device link not
Node.js中JavaScript操作MySQL的常用方法整理
如何用nodejs給C#寫一個數(shù)據(jù)表的實體類生成工具

