2017-02-05 3 views
1

Операция возвращает говорят deleted: 0Как удалить документ с помощью родного драйвера node-mongodb?

const res = await ctx.db.collection(this.col).removeOne({ _id: ctx.params.id }); 

Не уверен, что я делаю неправильно здесь. GET-запросы от { _id: <id> }, похоже, работают нормально.

ctx.params.id определено и совпадает с ObjectId в базе данных.

Согласно этому документу вы можете сделать collection.removeOne() (пример 2) https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#remove

// Remove all the document 
collection.removeOne({a:1}, {w:1}, function(err, r) { 
    test.equal(null, err); 
    test.equal(1, r.result.n); 
    db.close(); 
}); 

ответ

1

Попробуйте литья ctx.params.id к ObjectId, который является, как MongoDB хранит идентификаторы внутренне.

import { ObjectId } from 'mongodb' 

id = ObjectId(ctx.params.id) 
+0

Зачем мне это делать, когда я больше нигде не использую идентификаторы? – chovy

+0

@chovy Я на самом деле не уверен, но вы можете попробовать. Ваш код выше выглядит хорошо для меня. – zurfyx

+0

Это работает! человек, почему по этому методу, но не по-другому? странно. – chovy

Смежные вопросы