MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

$addToSet ke array tetapi itu memberi saya null

Masalahnya adalah hasil dari Product.find() adalah larik dokumen Mongoose jika kueri cocok dengan dokumen apa pun dalam koleksi alih-alih satu dokumen yang Anda inginkan.

Jadi ekspresi {$addToSet: {products: product._id}} memutuskan ke {$addToSet: {products: undefined}} karena product adalah array dan product._id tidak terdefinisi. Ambil contoh sederhana ini

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

Untuk mengatasi masalah ini, Anda dapat mengakses satu-satunya elemen dalam array sebagai

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

Atau gunakan findOne() metode yang mengembalikan satu dokumen saat menanyakan produk:

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() metode ini juga berguna dalam hal ini yaitu

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. Bagaimana Anda menjelaskan kueri yang berbeda di MongoDB?

  2. Mencantumkan pesan terakhir dari setiap percakapan, yang melibatkan pengguna, di MongoDB

  3. Menginstal MongoDB di Ubuntu 16.04

  4. Mengapa middleware nodejs-mongodb memiliki sintaks yang berbeda dari mongo shell?

  5. Aplikasi node tidak merespons setelah jangka waktu tertentu