首页 > 解决方案 > Monogo DB 更新错误:传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串

问题描述

所以我正在使用我的 Express 服务器来尝试更新我的 MongoDB 上的数组。

我的数据如下所示:

  {
            "ID": "1",
            "Name": "John",
            "Image URL": "https://www.bnl.gov/today/body_pics/2017/06/stephanhruszkewycz-hr.jpg",
            "Email": "",
            "userSkillIds": ["1","2"]
        },
        {
            "ID": "2",
            "Name": "Sarah",
            "Image URL": "https://www.venmond.com/demo/vendroid/img/avatar/big.jpg",
            "Email": "",
            "userSkillIds": ["3"]
        },

我正在尝试使用此代码将一个字符串数字插入到 userSkillIds 数组中

router.put('/task/:id',function(req,res,next) {
    var obj = req.body; 
    let skillId = obj.skillId; 
    if(obj == null || obj == {} ) {
        res.status(400);
        res.json({
            "error": "Bad Data"
        });
    }else {
        db.tasks.update(
            { _id: mongojs.ObjectID(req.params.id)},
            { $push: { userSkillIds: { 1: skillId } } }
         )
         res.json();
    }
}); 

但是我不断收到错误错误:传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串。

任何帮助将不胜感激!

标签: mongodbexpress

解决方案


可能是您的语法不正确,请使用 push 运算符,如下所示

db.tasks.update( { _id: 1 }, { $push: { userSkillIds: 89 } } )


推荐阅读