MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mein API-Code ruft ein leeres Datenarray von Mongodb ab, während der Code auf dem Mongodb-Spielplatz gut funktioniert

Es stellte sich heraus, dass das Casting der ObjectId das Problem zu sein schien. Wir müssen mongoose.Types.ObjectId verwenden

Der API-Code sieht folgendermaßen aus

getProductByProductId: function (productId) {
return new Promise((resolve, reject) => {
  User.aggregate([
  {
  $match: {
    "shops.products._id": mongoose.Types.ObjectId(productId)
  }
  },
  {
    "$unwind": "$shops"
  },
  {
    "$unwind": "$shops.products"
  },
  {
    $match: {
    "shops.products._id": mongoose.Types.ObjectId(productId)
  }
  },
  {
  $project: {
  "_id": "$shops.products._id",
  "title": "$shops.products.title"
  }
}
])
.then(products => {
resolve(products)
}).catch(err => {
reject(err);
});
});
}