MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

$ addToSet vào một mảng nhưng nó cho tôi giá trị rỗng

Vấn đề là kết quả từ Product.find() là một mảng các tài liệu Mongoose nếu truy vấn khớp với bất kỳ tài liệu nào trong bộ sưu tập thay vì một tài liệu duy nhất mà bạn muốn.

Do đó, biểu thức {$addToSet: {products: product._id}} giải quyết thành {$addToSet: {products: undefined}} bởi vì product là một mảng và product._id không định nghĩa được. Lấy ví dụ đơn giản này

var product = [{ '_id': 1 }];
console.log(product._id) // logs undefined

Để khắc phục sự cố này, bạn có thể truy cập phần tử duy nhất trong mảng là

wishList.update(
    { '_id': request.body.wishlistId },
    { '$addToSet': { 'products': product[0]._id} }, 
    function(err, wishlist) { ... }
);

Hoặc sử dụng findOne() phương thức trả về một tài liệu khi truy vấn sản phẩm:

Product.findOne({ '_id': request.body.productId }, function(err, product) {
    if(err) {
        response.status(500).send({err: "could not add item to wishlist"});
    } else {
        wishList.update(
            { '_id': request.body.wishlistId },
            { '$addToSet': { 'products': product._id } }, 
            function(err, wishlist) { ... }
        );
    }
});

findById() phương pháp này cũng hữu ích trong trường hợp này, tức là

Product.findById(request.body.productId, function(err, product) {
    if(err) {
        response.status(500).send({err: "could not add item to wishlist"});
    } else {
        wishList.update(
            { '_id': request.body.wishlistId },
            { '$addToSet': { 'products': product._id } }, 
            function(err, wishlist) { ... }
        );
    }
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tại sao tôi không thể chạy giải thích trên bản cập nhật MongoDB?

  2. mongoid .limit không hoạt động trong mongoid 3.1.x

  3. Làm cách nào để bạn thực hiện truy vấn AND trên một mảng trong mongodb?

  4. Không thể nhập json trong MongoDB

  5. Sử dụng nhiều giản đồ cho mỗi bộ sưu tập trên mongodb