1

我正在开发我的第一个涉及后端工作的 Web 开发项目,我正在尝试 mongoDB。我目前正在开发一个简单的管理面板,其中列出了每个用户,通过单击该用户,管理员可以进入并手动编辑他们的信息、更新并返回主用户列表以查看更改。

我正在尝试使用该方法更新现有用户,但我遇到了一个问题,它不仅会更新,还会创建具有匹配编号collection.save()的文档的副本。_id这是一张图片,说明了我的意思,这是我的所有更新代码:

router.post('/updateUser', function(req, res) {
var db = req.db;
var collection = req.collection;

var userId = req.body.userId;
var djStatus = req.body.djStatus;
var access = req.body.access;
var firstName = req.body.firstName;
var lastName = req.body.lastName;
var email = req.body.email;
var phone = req.body.phone;
var studentStatus = req.body.studentStatus;
var macIdNum = req.body.macIdNum;
var iclass = req.body.iclass;
var gradYear = req.body.gradYear;
var show = req.body.show;
var blurb = req.body.blurb;

collection.save(
{
    _id: userId,
    djStatus: djStatus,
    access: access,
    firstName: firstName,
    lastName: lastName,
    email: email,
    phone: phone,
    studentStatus: studentStatus,
    macIdNum: macIdNum,
    iclass: iclass,
    gradYear: gradYear,
    show: show,
    blurb: blurb
}, function (err, doc) {
    if (err) {
        res.send('there was a problem updating');
    } else {
        console.log(doc + ' doc');
        res.location('admin/users');
        res.redirect('admin/users');
    }
});    

});

我真的不确定为什么会这样。任何帮助将非常感激!

4

1 回答 1

0

从帖子中,我不确定您使用的是哪个 mongodb 驱动程序,但 save() 可能不用于更新 mongodb 中的文档。您正在使用的 mongodb 驱动程序应该有一个 update() 函数。例如,对于 mongoskin 驱动程序,这是插入/更新的语法:

collection.update(_id: userId, {$set: data}, {safe:true, upsert:true}, function (err, result) {
  // check err and result and do something
});
于 2014-06-27T20:46:53.790 回答