简体   繁体   English

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

[英]Mongoose: Schema for nested Json and store it (Node.js)

I'm pretty new to js and mongoose and I've ended up with a nested JSON. 我对js和mongoose很新,我最终得到了一个嵌套的JSON。

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

Now I tried to define a schema: 现在我尝试定义一个模式:

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;

Finally I tried to store it through Mongoose into MongoDB: 最后我尝试通过Mongoose将它存储到MongoDB中:

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

Either my schema is wrong and i need multiple schemas to store it correctly or sth. 我的架构是错误的,我需要多个架构来正确存储它或者...... else is wrong. 别的错了。 But in my database it only get's stored like this: 但在我的数据库中,它只是像这样存储:

{ "_id" : ObjectID("xxxxxxxxxxx"), "__v" : 0} {“_ id”:ObjectID(“xxxxxxxxxxx”),“__ v”:0}

Is it possible to define one Schema to store this nested JSON? 是否可以定义一个Schema来存储这个嵌套的JSON? If yes, how? 如果有,怎么样? If not, how do I manage to store it correctly? 如果没有,我该如何设法正确存储它?

Why does it only store an ObjectID? 为什么它只存储ObjectID?

Thanks in advance, appreciating every kind of help and sorry if my question is stupid as im new to this. 在此先感谢,感谢各种帮助,如果我的问题愚蠢,我很抱歉。

Update: 更新:

    var messageSchema  = new Schema({
      id: Number,
      name: Schema.Types.Mixed,
      type: Schema.Types.Mixed,
      message: [message]

     }, {collection: 'test'});


    var message = new Schema({
    "messagetype": "default message",
     "timestamp": "35235326326",
     "messagestatus": "running"
     })

Then it gets stored like this { "_id" : ObjectID("xxxxxxxxxxx"), "message" : [], "__v" : 0} 然后它会像这样存储{“_ id”:ObjectID(“xxxxxxxxxxx”),“message”:[],“__ v”:0}

For a nested JSON, you can do something like this: 对于嵌套的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
  }
});

If the nested block is a list then you can do this: 如果嵌套块是列表,那么您可以这样做:

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]
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM