Mongoose:嵌套Json的架构并存储它(Node.js)

时间:2016-06-02 09:41:03

标签: javascript node.js mongodb mongoose schema

我对js和mongoose很陌生,我最终得到了一个嵌套的JSON。

HandleVal.visitLocal

现在我尝试定义架构:

var standardmessage = {
        "id": "352",
        "name": "a name",
        "type": "a type",
        "message":
            {
                "messagetype": "default message",
                "timestamp": "35235326326",
                "messagestatus": "running"
            }
    }

最后我尝试将它通过Mongoose存储到MongoDB中:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var messageSchema  = new Schema({
    id: Number,
    name: Schema.Types.Mixed,
    type: Schema.Types.Mixed,
    message:
            {
                messagetype: String,
                timestamp: Number,
                messagestatus: String
            }
}, {collection: 'test'});

var testmodel = mongoose.model('messagemodel', messageSchema,'test');

module.exports = testmodel;

我的架构是错误的,我需要多个架构才能正确存储或者......别的错了。但在我的数据库中,它只能像这样存储:

{" _id" :ObjectID(" xxxxxxxxxxx")," __ v" :0}

是否可以定义一个Schema来存储这个嵌套的JSON?如果有,怎么样? 如果没有,我该如何设法正确存储?

为什么它只存储ObjectID?

提前致谢,感谢各种帮助,如果我的问题愚蠢,我很抱歉。

更新

var Message = new testmodel({standardmessage});
                Message.save(function (err) {
                if (err) console.log(err);
                });

然后就像这样存储{" _id" :ObjectID(" xxxxxxxxxxx")," message" :[]," __ v" :0}

1 个答案:

答案 0 :(得分:0)

对于嵌套的JSON,您可以执行以下操作:

var mongoose =require('mongoose');
var Schema = mongoose.Schema;

var standardmessage = new Schema({
  id: Number,
  name: String,
  type: String,
  message: {
    messageType: String,
    timestamp: Number,
    messagestatus: String
  }
});

如果嵌套块是列表,则可以执行以下操作:

var mongoose =require('mongoose');
var Schema = mongoose.Schema;

var msg = new Schema({
  messageType: String,
  timestamp: Number,
  messagestatus: String
});

var standardmessage = new Schema({
  id: Number,
  name: String,
  type: String,
  message: [msg]
});