(我使用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
是否合法的数组元素