2012-04-10 8 views
0

私はmongodbからnode.jsとmongodb-wrapperを使ってエントリを選択/削除しようとしています。 私はエントリのidをhttpリクエストによって文字列として取得します。 次に、特定のIDを持つエントリを削除します。mongodb-wrapperとエントリのObjectId

app.delete('/posts/:id', function(req, res) { 
res.header("Access-Control-Allow-Origin", "*"); 
db.posts.remove({"_id": req.params.id}, function(err) { 
    if (err) return res.send(err.message, 500); // server error 
    res.send(200); 
    }) 
res.send("ok"); 
}); 

しかし、これは機能しません。私はすでにいくつかの方法を試みましたが、何もエントリを削除しません。文字列をObjectIdに変換しなければならないものがありますが、今まではmongodb-wrapperでこれを行う方法が見つかりませんでした。

+0

[This] [1]質問があなたを助けることができるかもしれません。 [1]:http://stackoverflow.com/questions/4902569/node-js-mongodb-select-document-by-id-node-mongodb-native –

+0

私はすでにありましたけど...私は再び見て、かなり深いと私の問題を発見:) – soupdiver

答えて

1

{"_id": req.params.id}を使用すると、objectIdではなく文字列が照会されます。あなたはそれを使用する文字列からObjectIdを作成する必要があります。

var ObjectID = require('mongodb').ObjectID; 
var oid = new ObjectID(req.params.id); 

はreq.params.id内のデータが有効なオブジェクトIDに変換できない場合、このエラーがスローされることに注意してください。

関連する問題