Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在node js中将嵌套数组推送到mongo db中_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 如何在node js中将嵌套数组推送到mongo db中

Javascript 如何在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},

我正在尝试使用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},
    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)时,它打印为“未定义”