首页 > 解决方案 > 如何在猫鼬中插入数组项?

问题描述

我正在用 MEAN Stack 制作一个网站

我做了一个架构。

下面是架构。

const StoreSchema = mongoose.Schema({
  storename: {
    type: String
  },
  storenumber: {
    type: Number
  },
  product: [{
    pname: String,
    pcode: Number,
    price: String,
    detail: String
  }]
});

产品是数组。

当我制作这个模式时,猫鼬会像这样。

_id:5c3afaa96649e84364aab24b
storenumber:1
product:Array
__v:0

现在有一个问题。

我想将值插入到产品数组中的 pname、pcode、price、detail 中。

但我无法将值推送到数组中。

下面是插入值代码。

module.exports.addProd = function(newProd, callback) {
 Store.updateOne({
    storenumber: number
  }, {
    $push: {
      pname: newProd.pname
    },
    $push: {
      pcode: newProd.pcode
    },
    $push: {
      price: newProd.price
    },
    $push: {
      detail: newProd.detail
    }
  }, callback);
}

但它不起作用。

即使我写了产品。

newProd 中的值都是正确的

我想要的是这样的

product[0] = {
    pname:blah, 
    pcode:1, 
    price:5, 
    detail:blah blah
}

如何在猫鼬中将值插入数组?

请帮我

标签: javascriptmongodbmongoosemean-stack

解决方案


您必须将整个对象推到一起,而不是像这样每个字段 -

Store.updateOne({
  storenumber: number
}, { $push: { "product": newProduct } }, callback);

并且您应该使用异步等待而不是使用回调 -

module.exports.addProd = async newProd => {
  let res = await Store.updateOne({
    storenumber: number
  }, { $push: { "product": newProduct } });
  return res;
}

推荐阅读