2017-04-24 48 views
0

我尝试对另一个对象内的属性进行计数,但得到一个错误的值:我想计算order对象的productInfo属性中的对象,它是15,但是我的函数返回46 。对象或数组中的对象的count属性的问题

router.get("/product", isLoggedIn, function (req, res) { 
    products.find({}, function (err, products) { 
     if (err) { 
      console.log("ERROR!"); 
     } else { 
      orders.find({ 
       customerInfo: req.user 
      }, function (err, orders) { 
       if (err) { 
        console.log("ERROR!"); 
       } else { 
        res.render("allProduct", { 
         data1: _.keys(orders[0].productInfo).length,//here object must counted! 
         data:products 
        }); 
       } 
      }); 
     } 
    }); 
}); 

,这里是我的模型:

var mongoose = require("mongoose"); 

var order = new mongoose.Schema({ 
    orderNo: Number, 
    customerInfo: [{ 
      type: mongoose.Schema.Types.ObjectId, 
      ref: "User" 
     }], 
    productInfo: [{ 
      type: mongoose.Schema.Types.ObjectId, 
      ref: "product" 
     },] 
}); 

//EXPORT 
module.exports = mongoose.model("order", order); 

和:

var mongoose =require("mongoose"); 

var product = new mongoose.Schema({ 
    productNo: Number, 
    productName: String, 
    productDes:String, 
    productPrice:Number, 
}); 

//EXPORT 
module.exports = mongoose.model("product",product); 
+0

'}]'你productinfo模型有一个尾随逗号。不知道这是否会造成问题。 – Jai

回答

0

我解决这个问题,替换为:

_.keys(orders[0].productInfo).length, 

有:

orders[0].productInfo.length