5

IDに基づいてレコードを削除しようとしています。get動詞を介してIDを送信し、req.params.idからアクセスしています。コードが機能しません。私は何を間違っていますか?

//delete user
router.get('/deleteuser/:id', function(req, res){
    var db = req.db;
    db.users.remove({'_id':req.params.id}, function(err, docs) {
        if (err) return err;
        res.send(docs); // see results
    });
});

req.params.id の前に「ObjectId」を追加する必要があることに気付きました。ただし、連結は機能しません。私はこれまでのところこれを持っています。別の方法はありますか:

//delete user
router.get('/deleteuser/:id', function(req, res){
    var db = req.db;
    var objId = 'ObjectId("' + req.params.id + '")';
    console.log(objId);
    db.users.remove({"_id": objId}, function(err, docs) {
  //db.users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")});  works in mongo console
        if (err) return err;
        console.log(docs);
        res.send(docs);
    });
});

これはうまくいきました:

// db.ObjectId(req.params.id)

router.get('/deleteuser/:id', function(req, res){
    var db = req.db;
    db.users.remove({"_id": db.ObjectId(req.params.id)}, function(err, docs) {  //db.users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")});
        if (err) return err;
        console.log(docs);
        res.send(docs);
    });
});
4

2 に答える 2

8

これを使用してアクセスしました:

db.ObjectId(req.params.id)
于 2014-06-29T15:46:13.413 に答える
2

By Id は、ID を文字列形式で渡すことで削除できます。json を渡す必要はありません。

db.users.removeById(req.params.id, function(err, docs) {

入ってくるラインになります。

JSON構文を維持したい場合は、次のようにする必要があります

db.users.remove({'_id': new ObjectID(req.params.id)}, function(err, docs) {

するかもしれません。ObjectID は、使用しているドライバーによって異なります。

于 2014-06-15T20:05:37.363 に答える