javascript - 如何在猫鼬中插入数组项?
问题描述
我正在用 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
}
如何在猫鼬中将值插入数组?
请帮我
解决方案
您必须将整个对象推到一起,而不是像这样每个字段 -
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;
}
推荐阅读
- angular - 获取 POST : 400 角度错误请求
- angular - 没有从服务 Angular 8 中获取更新的值
- spring-boot - spring boot 连接阿里巴巴 e-mapreduce kafka
- rest - 如何通过 bitbucket REST api 1.0 从所有分支获取所有提交?
- c# - .Net Nuget 包安装重新返回 ssl 错误
- aix - IBM PL/I:使用固定变量
- c++ - 如何在 qt 中包含菜单项的工具提示
- python - 我想在办公室找到一天中最忙的时间
- azure-storage - 在 Azure 存储上创建 PDF 后写入 PDF 文件内容
- ios - 快速为谷歌地图的圆圈添加标题