我对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}
答案 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]
});