我从前端获取数组对象,并希望使用NodeJS,Mongodb将其保存在集合中。
我的目标是:
routerData={"User-Name":
{"type":"string","value":["\u0000\u0000\u0000\u0000"]},
"NAS-IP-Address":
{"type":"ipaddr","value":["10.1.0.1"]}
},
我的收藏架构是:
var model = new Schema({
routerData:{
"User-Name": {
"type": String,
"value": []
},
"NAS-IP-Address": {
"type": String,
"value": []
},
},
});
我正在尝试使用此代码:
var obj = new objModel(req.body);
obj.routerData = req.body.routerData;
obj.save(function (err, result) {
});
我收到此错误:
"message": "Cast to Object failed for value \"{\"User-Name\":{\"type\":\"string\",\
答案 0 :(得分:2)
如果你想在你的模式中有一个名为'type'的属性,你应该像'type'一样指定它:{type:String}。
您的值数组也应该具有类型:“value”:[String]
这是一个有效的例子。
'use strict';
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Schema = mongoose.Schema;
var schema = new Schema({
routerData: {
'User-Name': {
'type': {type: String},
'value': [String]
},
'NAS-IP-Address': {
'type': {type: String},
'value': [String]
},
},
});
var RouterData = mongoose.model('RouterData', schema);
var routerData = {
'User-Name': {'type': 'string', 'value': ['\u0000\u0000\u0000\u0000']},
'NAS-IP-Address': {'type': 'ipaddr', 'value': ['10.1.0.1']}
};
var data = new RouterData({routerData: routerData});
data.save();