首页 > javascript array.length undefined?

javascript array.length undefined?

(我使用mongoose populate一个数据,在使用match的时候,没有match的数据会返回为null)总的来说我得到一条数据,我认为他是array,数据如下:

[ { order: null },
  { order: null },
  { order: null },
  { order: null },
  { order: null },
  { order: 
     { date: Mon May 30 2016 21:31:15 GMT+0800 (HKT),
       dishs: [Object],
       __v: 0,
       message: 'plz deliver after 5 p.m',
       price: 5,
       address: [Object],
       shop: null,
       user: 574bfebc29cf722c17f8eafe,
       _id: 574c40a3e9f7b1f419192ed1 } } ]
       

我尝试打印了

                console.log(doc.orders.length);//undefined
                console.log(typeof doc.orders);//object
                

请问这是怎么回事呢?

//自己解决的答案如下
populate出来的数据不是合法的数组,原因是我的schma定义错误。
错误的 schema:

orders:{order: [{type: mongoose.Schema.Types.ObjectId, ref:'Order'}] }

正确的schema

orders:{type:[{
  order:{type: mongoose.Schema.Types.ObjectId, ref:'Order'}
}]}

这样,populate就会返回一个合法的array。


我没用过mongoose,不过你可以用Array.isArray(doc.orders)检查下orders是否合法的数组元素

【热门文章】
【热门文章】