MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mon code api récupère un tableau de données vide de mongodb alors que le code fonctionne bien sur mongodb playground

Il s'avère que le casting de l'ObjectId semblait être le problème. Nous devons utiliser mongoose.Types.ObjectId

Le code API ressemblera à ceci

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);
});
});
}