使用的express+mongoose
var commentSchema = new mongoose.Schema({
goodId: {type: String},
username: {type: String},
content: {type: String},
createTime: {type: Date},
follow: []
});
router.get('/comment/:goodId', function (req, res, next) {
var content = {goodId: req.params.goodId};
commentModel.find(content).lean().exec(function (err, result) {
if (err) {
console.log(err);
res.json({'status': 'err', 'info': '数据获取失败!'});
} else {
console.log(result);
res.json({'status': 'ok', 'info': result});
}
});
});
console.log输出的结果:
[ { _id: 57f79e5e310aea056fe30710,
goodId: '57f70900ebb75c03805d0015',
username: 'aa',
content: '盖楼第一层a',
createTime: Fri Oct 07 2016 21:08:46 GMT+0800 (CST),
follow: [],
__v: 0 },
{ _id: 57f79e76310aea056fe30711,
goodId: '57f70900ebb75c03805d0015',
username: 'aa',
content: '盖楼第一层a',
createTime: Fri Oct 07 2016 21:08:46 GMT+0800 (CST),
follow: [ [Object], [Object], [Object] ],
__v: 0 }
在mongo命令行中查询的结果:
> db.comments.find().toArray();
[
{
"_id" : ObjectId("57f79e5e310aea056fe30710"),
"goodId" : "57f70900ebb75c03805d0015",
"username" : "aa",
"content" : "盖楼第一层a",
"createTime" : ISODate("2016-10-07T13:08:46.562Z"),
"follow" : [ ],
"__v" : 0
},
{
"_id" : ObjectId("57f79e76310aea056fe30711"),
"goodId" : "57f70900ebb75c03805d0015",
"username" : "aa",
"content" : "盖楼第一层a",
"createTime" : ISODate("2016-10-07T13:08:46.562Z"),
"follow" : [
{
"createTime" : ISODate("2016-10-07T13:09:10.238Z"),
"content" : "盖楼第二层bb",
"username" : "bb"
},
{
"createTime" : ISODate("2016-10-07T13:09:10.238Z"),
"content" : "盖楼第二层bb",
"username" : "bb"
},
{
"createTime" : ISODate("2016-10-07T13:09:10.238Z"),
"content" : "盖楼第二层bb",
"username" : "bb"
}
],
"__v" : 0
}
]
数据插入操作都是没有问题的。现在获取到的result ( follow: [ [Object], [Object], [Object] ],) 传到客户端后,follow输出值完全就是空的。 求指导,怎么才能获取到follow的值?
这是因为Object的toString返回的就是这个 你可以转成一个字符串就可以了 比如Json From Noder
console.dir(data, {depth: null})
@yeliex 我找到自己的问题所在了。 我返回的result是一个数组,而我用result.follow 这种方式获取(我真是太逗逼了,应该是result[x].follow),所以我总是获取不到值。仔细看了下,服务端console的数据是对的,但浏览器console 显示数组follow中第一个元素会被丢掉,费解。目前处理方式就是把follow转为字符串了。 感谢解答。
@Neil-UWA get一项新技能,感谢!
JSON.stringify(obj)
@hwoarangzk 感谢。我自己已经解决了。用了stringify 这个知识点
stringify
是序列化成字符串了,自然没有问题,只不过格式就不是JSON了。console.log
打印是有depth
限制的,你可以使用util.inspect
并结合depth
属性打印。console.dir
也是很流弊的