MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

$addToSet към масив, но ми дава нула

Проблемът е, че резултатът от Product.find() е масив от документи на Mongoose, ако заявката съответства на всички документи в колекцията, вместо на един документ, който искате.

Така изразът {$addToSet: {products: product._id}} разрешава до {$addToSet: {products: undefined}} защото product е масив и product._id е недефиниран. Вземете този прост пример

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

За да разрешите този проблем, можете или да получите достъп до единствения елемент в масива като

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

Или използвайте findOne() метод, който връща единичен документ при запитване към продукта:

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() методът също е полезен в този случай, т.е.

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. Извличане на данни от колекция MongoDB в Swing JTable

  2. Nodejs Mongoose - как да избегнем ада с обратно извикване?

  3. Проблем с безопасно_формат_монтиране на Google Compute Engine – посочете грешка във типа на файловата система

  4. MongoDB вмъкване без дубликати

  5. Премахване на документи от колекция MongoDB въз основа на час на поле за дата