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 に答える