MongoDB:我想将数组对象存储在集合中

时间:2017-02-11 06:42:18

标签: node.js mongodb mongoose

我从前端获取数组对象,并希望使用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\",\

1 个答案:

答案 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();