我在服务器端的mongo db中插入对象使用节点js和表达js框架和前端我使用角度js.But它抛出的错误是 MongoError:key $ get一定不能启动'$'
server.js
app
.use(bodyParser.json())
.post('/contact', upload.single('file'), function(req,res){
var contact = req.body;
delete contact.$promise;
delete contact.$resolved;
console.log(contact);
//console.log(req.file);
contact.userId = 1;
db.collection(CONTACTS_COLLECTION).insertOne(contact, function(err, doc) {
if (err) {
console.log(err + " Unsuccess");
} else {
console.log(doc.ops[0]);
res.status(201).json(doc.ops[0]);
}
});
})
在控制台显示联系人
{ firstName: 'abc,text',
lastName: 'abc,text',
toJSON: 'function (){var a=v({},this);delete a.$promise;delete a.$resolved;return a}',
'$get': 'function (a,b,d){x(a)&&(d=b,b=a,a= {});a=m[c].call(this,a,this,b,d);return a.$promise||a}',
'$save': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}',
'$query': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}',
'$remove': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}',
'$delete': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}',
'$update': 'function (a,b,d){x(a)&&(d=b,b=a,a={});a=m[c].call(this,a,this,b,d);return a.$promise||a}' }
错误
MongoError:key $ get不能以'$'Unsuccess
开头
提前谢谢
答案 0 :(得分:1)
您是否真的想要存储在控制台中显示的相同联系人?用所有$命令?或者它是否被附加不受欢迎?你从前端发送了什么对象?
作为mongoDB $的答案是一个保留关键字,它不应该在您尝试保存的文档的密钥中使用。如果他们允许$ in键,查询将开始失败,因为mongo使用具有特殊用途的$ keywords,也会出现类似于SQL注入的安全威胁。
作为一个解决方案,如果你真的想用相同的数据存储联系人,我建议用get或_get代替$ get,用$ keyword代替所有的密钥。
谢谢