>웹 프론트엔드 >JS 튜토리얼 >몽구스에서 객체를 업데이트하는 두 가지 방법

몽구스에서 객체를 업데이트하는 두 가지 방법

小云云
小云云원래의
2017-12-20 09:23:342176검색

Mongoose는 node.js 비동기 환경에서 mongodb에 대해 편리한 작업을 수행하는 객체 모델 도구입니다. 최근 mongoose를 사용하면서 이전에 주목하지 않았던 지식 포인트를 발견했습니다. 이번 글에서는 주로 두 가지 방법을 소개합니다. mongoose.에서 객체를 업데이트하는 동안, 두 가지 방법을 샘플 코드를 통해 자세히 비교하여 학습이 필요한 모든 사람에게 더 나은 참고 자료를 제공합니다. 그것이 모두에게 도움이 되기를 바랍니다.

이를 사용하려면 먼저 node.js와 mongodb를 설치해야 합니다. mongodb 설치 및 운영에 대한 소개는 다음을 참조하세요.

시나리오 설명

장바구니 수량 업데이트 및 확인 status

비즈니스 로직

현재 사용자의 장바구니 개체 Cart를 쿼리하고 프런트 엔드에서 전달한 수량과 선택한 필드를 업데이트합니다.

방법 1

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
 }

방법 2

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
  })
  );
 });
 }
);
와 동일합니다.

Comparison

findOneAndUpdate를 사용하는 첫 번째 코드는 한 단계만 수행하므로 업데이트된 필드가 적고 매우 명확한 시나리오에 더 간결하고 적합합니다. 두 번째 방법은 먼저 findOne을 사용한 다음 엔터티를 저장하는 것입니다. , 이는 전체 개체 작업을 보다 유연하게 만들고 많은 필드와 불확실성이 있는 시나리오에 적합합니다

결론

요구 사항은 항상 변하기 때문에 일반적으로 두 번째 옵션을 사용합니다.

관련 권장 사항:


Mongoose의 가상 필드 쿼리 구현 방법에 대한 자세한 설명

,

MongoDB 기본 tutorial_node.js

Node.js MongoDB 드라이버 Mongoose 기본 사용법을 위해 Node.js와 함께 Mongoose 설치 및 사용 tutorial_node.js

위 내용은 몽구스에서 객체를 업데이트하는 두 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.