MongoError:key $ get不能以'$'开头

时间:2016-09-29 04:09:00

标签: javascript angularjs node.js mongodb express

我在服务器端的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

开头

提前谢谢

1 个答案:

答案 0 :(得分:1)

您是否真的想要存储在控制台中显示的相同联系人?用所有$命令?或者它是否被附加不受欢迎?你从前端发送了什么对象?

作为mongoDB $的答案是一个保留关键字,它不应该在您尝试保存的文档的密钥中使用。如果他们允许$ in键,查询将开始失败,因为mongo使用具有特殊用途的$ keywords,也会出现类似于SQL注入的安全威胁。

作为一个解决方案,如果你真的想用相同的数据存储联系人,我建议用get或_get代替$ get,用$ keyword代替所有的密钥。

谢谢