javascript array.length undefined?
高洛峰
高洛峰 2017-04-11 10:43:56
[JavaScript讨论组]

(我使用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。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号