【发布时间】:2016-10-01 23:16:55
【问题描述】:
我对 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}
【问题讨论】:
-
请在(标准消息)字段中显示您的数据
-
使用您提供的示例,我得到了它的工作。我只需要从 'var Message = new testmodel({standardmessage});'中删除 {}
-
那不是真的
标签: javascript node.js mongodb mongoose schema