Javascript 如何在node js中将嵌套数组推送到mongo db中
我正在尝试使用mongoose将产品数据发布到MongoDBJavascript 如何在node js中将嵌套数组推送到mongo db中,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试使用mongoose将产品数据发布到MongoDB 产品型号 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var productsSchema = new Schema({ // productId: {type: _id, required: true, autoIndex: true}, merchantId: {type: String, required: true},
产品型号
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var productsSchema = new Schema({
// productId: {type: _id, required: true, autoIndex: true},
merchantId: {type: String, required: true},
productName: {type: String, required: true},
productDescription: {type: String, required: true},
uploadDate: {type: Date, default: Date.now},
productAttributes: [
{
size: {type: Number, required: true},
colors: [
{
color: {type: String, required: true},
qty: {type: Number, required: true},
price: {type: Number, required: true},
images: [{
image1: {type: String, required: true},
image2: {type: String, required: false},
image3: {type: String, required: false}
}]
}
]
}
],
otherAttributes: {
length: {type: Number, required: false},
fabricType: {type: Number, required: false},
sleeves: {type: String, required: false}
}
});
module.exports.createProduct = function (product, callback) {
var newProduct = new Products();
newProduct.merchantId = product.merchantId;
newProduct.productName = product.productName;
newProduct.productDescription = product.productDescription;
newProduct.productAttributes.size = product.productAttributes.size;
newProduct.productDescription.colors.color=product.productAttributes.colors.color;
newProduct.productDescription.colors.qty=product.productAttributes.colors.qty;
newProduct.productDescription.colors.price=product.productAttributes.colors.price;
newProduct.productDescription.colors.images.image1=product.productAttributes.colors.image1;
Products.create(newProduct, callback);
}; <br/>
CreateProductMethod
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var productsSchema = new Schema({
// productId: {type: _id, required: true, autoIndex: true},
merchantId: {type: String, required: true},
productName: {type: String, required: true},
productDescription: {type: String, required: true},
uploadDate: {type: Date, default: Date.now},
productAttributes: [
{
size: {type: Number, required: true},
colors: [
{
color: {type: String, required: true},
qty: {type: Number, required: true},
price: {type: Number, required: true},
images: [{
image1: {type: String, required: true},
image2: {type: String, required: false},
image3: {type: String, required: false}
}]
}
]
}
],
otherAttributes: {
length: {type: Number, required: false},
fabricType: {type: Number, required: false},
sleeves: {type: String, required: false}
}
});
module.exports.createProduct = function (product, callback) {
var newProduct = new Products();
newProduct.merchantId = product.merchantId;
newProduct.productName = product.productName;
newProduct.productDescription = product.productDescription;
newProduct.productAttributes.size = product.productAttributes.size;
newProduct.productDescription.colors.color=product.productAttributes.colors.color;
newProduct.productDescription.colors.qty=product.productAttributes.colors.qty;
newProduct.productDescription.colors.price=product.productAttributes.colors.price;
newProduct.productDescription.colors.images.image1=product.productAttributes.colors.image1;
Products.create(newProduct, callback);
}; <br/>
module.exports.createProduct=函数(产品,回调){
var newProduct=新产品();
newProduct.merchantId=product.merchantId;
newProduct.productName=product.productName;
newProduct.productDescription=product.productDescription;
newProduct.productAttributes.size=product.productAttributes.size;
newProduct.productDescription.colors.color=product.productAttributes.colors.color;
newProduct.productDescription.colors.qty=product.productAttributes.colors.qty;
newProduct.productDescription.colors.price=product.productAttributes.colors.price;
newProduct.productDescription.colors.images.image1=product.productAttributes.colors.image1;
创建(新产品、回调);
};
在**将数据发布到服务器时,我遇到此异常无法读取Function.module.exports.createProduct处未定义的属性“color”为什么我会犯这个错误
请帮忙。你有几个错误
newProduct.productDescription
是一个字符串,不能将值赋给newProduct.productDescription.size
product.productAttributes.size
所需的索引必须是product.productAttributes[0]。size
或使用forEach
循环迭代product.productAttributes.colors.color所需的索引代码>,必须是product.productAttributes[0]。颜色[0]。颜色代码>或使用forEach
循环迭代
您必须将颜色、数量、价格和图像添加到
productAttributes.colors
而不是ProductDescription每日布道时间增益。不要嵌套数组。这看起来像是您第一次尝试编写一个结构,因此您需要了解其局限性。请参阅,以了解这将如何返回并影响您。简单地说,您已经遇到了麻烦,因为您正在遍历数组,而没有注明实际要更新的项目的“索引”位置。请记住,“数组是列表”,因此其中包含多个内容。此外,文档中还有另一个数组。看看能不能理解那个。奇怪的是,这种结构与我第一次使用MongoDB时尝试的结构几乎完全相同。尼尔·伦恩:我明白你的意思。我也浏览了你分享的链接。我在这样的一个文件中看到了库存结构:{id:1,项目:“abc”,库存:[{size:“S”,颜色:“red”,数量:25},{size:“S”,颜色:“blue”,数量:10},{size:“M”,颜色:“blue”,数量:50}
。我喜欢结构,它也可以满足我的要求。但是,如何推送库存数组数据。?Tleukabilu:trusted product.productAttributes[0]。colors[0]。color,现在我要推送数据,但productsAttributes存储为[]。我执行了console.log(product.productAttributes[0].colors[0].color),然后它正确地打印了值,但当我执行console.log(newProduct.productDescription.colors.color)时,它打印为“未定义”