簡體   English   中英

Mongoose:嵌套Json的架構並存儲它(Node.js)

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

我對js和mongoose很新,我最終得到了一個嵌套的JSON。

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

現在我嘗試定義一個模式:

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;

最后我嘗試通過Mongoose將它存儲到MongoDB中:

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

我的架構是錯誤的,我需要多個架構來正確存儲它或者...... 別的錯了。 但在我的數據庫中,它只是像這樣存儲:

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

是否可以定義一個Schema來存儲這個嵌套的JSON? 如果有,怎么樣? 如果沒有,我該如何設法正確存儲它?

為什么它只存儲ObjectID?

在此先感謝,感謝各種幫助,如果我的問題愚蠢,我很抱歉。

更新:

    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"
     })

然后它會像這樣存儲{“_ id”:ObjectID(“xxxxxxxxxxx”),“message”:[],“__ v”: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]
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM