Mongoose模式不使用嵌套对象数组(Node.js)

时间:2017-12-05 18:30:07

标签: node.js mongodb mongoose mongoose-schema

我在mLab上创建了一个简单的Mongo数据库,我想使用Node.js和Mongoose在我的控制台上打印内容,但是我无法弄清楚我的架构有什么问题(或者某些东西)否则也许?)。它无法打印嵌套的对象数据。

这是我的数据库结构:

{
    "_id": {
        "$oid": "5a26d0a8f36d280fefe443ed"
    },
    "housename": "my sweet home",
    "rooms": [
        {
            "roomname": "kitchen",
            "appliance": "fridge"
        },
        {
            "roomname": "bedroom",
            "appliance": "lamp"
        }
    ]
}

我正在尝试打印这样的内容:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userDataSchema = new Schema({housename: String, rooms: [{roomname: String, appliance: String}] }, {collection: 'testcollection'});
var userData = mongoose.model('userData', userDataSchema); 

var mongoDB = 'mongodb://homeuser:homeuser@ds129776.mlab.com:29776/homedb';
mongoose.connect(mongoDB, {
  useMongoClient: true
});
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

userData.find({}, function(err, data) {
    console.log(data);
});

问题是,控制台没有打印嵌套的房间对象:

VSHANDIL-M-60PS:mongoclient vshandil$ node mongoclient.js 
[ { _id: 5a26d0a8f36d280fefe443ed,
    housename: 'my sweet home',
    rooms: [ [Object], [Object] ] } ]

任何人都可以帮我找出可能出错的地方吗?我正在尝试按照以下文档:

http://mongoosejs.com/docs/guide.html

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

这只是console.log行为。 试试console.log(JSON.stringify(data));它会给你完整的对象。