将产品长时间插入子模式?

时间:2017-02-22 14:54:09

标签: node.js mongodb mongoose mongodb-query

我有mongoose架构:

var productSchema = new Schema({
    "productId"         : {type : String},
    "productName"       : {type : String},
    "mrp"               : {type : String}

});

var shopSchema = new Schema({
    "ShopId"    : {type : Number},
    "Name"      : {type : String},
    "contact"   : {type : Number},
    "products"  : [productSchema]
},{collection:"shopProductDetails"});

module.exports.Shops    = mongoose.model('Shops',shopSchema);
module.exports.Products = mongoose.model('Products',productSchema);

我已成功将数据插入商店。接下来我必须插入数据 productSchema

的子模式中

插入数据

{
  "ShopId":"439",
    "products": [{
  "productId": "1234",
  "productName": "non veg",
  "mrp": "38",
  }, {
  "productId": "5678",
  "productName": "veg",
  "mrp": "38 "
  },{...}]
 }

产品广告代码:

 model.Shops.findOne({"ShopId":439},function(err, doc){
    if(doc == null){
      res.json({'success':'0','result':{},'errorMessage':'Credentials not matched'});
    }
    else{
       async.each(products,function(item){
        var insertProducts={productId: item.productId, productName: item.productName, mrp: item.mrp};
        doc.products.push(insertProducts)
        });
        doc.save(function (err, data) {
        if (err) {
              res.json({'errorMessage':err});
             }
         else {
           res.json({'success':'1','result':{'message':'Products Inserted Successfully'},'errorMessage':'No'});
         }
       });
   }
});

此处产品已成功插入,问题是当存在批量数据时需要花费大量时间。我在这里使用异步,我认为它是错误的。任何人都可以提出更好的方法

1 个答案:

答案 0 :(得分:0)

我建议您只在商店中获得该产品的参考ID。它将节省您进行查询的时间(现在您只需插入一个id而不是在数据库中查找另一个文档)。