如何在猫鼬中插入数组项?

时间:2019-01-15 04:04:17

标签: javascript mongodb mongoose mean-stack

我正在使用MEAN Stack创建一个网站

我做了一个模式。

下面的

是架构。

string s(1, line[i]);

if (s == string(".")) { ... }
else if (s == string(argc[4])) { ... }

产品是数组。

当我创建此架构时,猫鼬使其成为这样。

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

现在有问题。

我想在产品数组中为pname,pcode,价格,明细插入值。

但是我不能将值推送到数组。

下面的

是插入值代码。

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

但是它不起作用。

即使我写了产品。

newProd中的值都是正确的

我想要的是这样

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

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

请帮助我

1 个答案:

答案 0 :(得分:0)

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

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