Jawaban:
Jika Anda tidak ingin mengulanginya, coba FBFriendModel.find({ id:333 }).remove( callback );
atauFBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
mengembalikan Query , yang memiliki remove
fungsi .
Pembaruan untuk Mongoose v5.5.3 - remove()
sekarang tidak digunakan lagi. Gunakan deleteOne()
, deleteMany()
ataufindOneAndDelete() instead.
.exec()
tetapi ini tidak sama sekali. Apakah .exec()
diperlukan, apakah ada efek samping untuk menggunakannya atau tidak?
UPDATE: Versi luwak (5.5.3)
hapus () sudah usang dan Anda bisa menggunakan deleteOne (), deleteMany (), atau bulkWrite () sebagai gantinya.
Pada "mongoose": ">=2.7.1"
Anda dapat menghapus dokumen secara langsung dengan .remove()
metode daripada menemukan dokumen dan kemudian menghapusnya yang menurut saya lebih efisien dan mudah dirawat.
Lihat contoh:
Model.remove({ _id: req.body.id }, function(err) {
if (!err) {
message.type = 'notification!';
}
else {
message.type = 'error';
}
});
MEMPERBARUI:
Pada luwak 3.8.1
, ada beberapa metode yang memungkinkan Anda menghapus langsung dokumen, katakan:
remove
findByIdAndRemove
findOneAndRemove
Lihat dokumen API luwak untuk informasi lebih lanjut.
remove(query)
berpotensi mengosongkan seluruh koleksi Anda jika Anda tidak sengaja lulus query = {}
. Karena itu saya lebih suka findOneAndRemove(query)
jika saya hanya menghapus satu dokumen.
Model.remove({ _id: 'whatever' }).exec().then(...)
docs
adalah berbagai dokumen. jadi tidak ada mongooseModel.remove()
metode.
Anda dapat mengulang dan menghapus setiap dokumen dalam array secara terpisah.
Atau - karena sepertinya Anda menemukan dokumen dengan (mungkin) id unik - findOne
bukan menggunakan find
.
Ini bagi saya adalah yang terbaik pada versi 3.8.1:
MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});
Dan itu hanya membutuhkan satu panggilan DB. Gunakan ini mengingat Anda tidak melakukan remove
tindakan apa pun selain pencarian dan penghapusan.
pre 'remove'
tindakan itu berfungsi dengan baik.
Lakukan saja
FBFriendModel.remove().exec();
mongoose.model.find()
mengembalikan Objek Permintaan yang juga memiliki remove()
fungsi.
Anda dapat menggunakan mongoose.model.findOne()
juga, jika Anda ingin menghapus hanya satu dokumen unik.
Jika tidak, Anda dapat mengikuti pendekatan tradisional di mana Anda pertama kali mengambil dokumen dan kemudian menghapus.
yourModelObj.findById(id, function (err, doc) {
if (err) {
// handle error
}
doc.remove(callback); //Removes the document
})
Berikut ini cara-cara pada model
objek yang dapat Anda lakukan salah satu dari yang berikut untuk menghapus dokumen:
yourModelObj.findOneAndRemove(conditions, options, callback)
yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
var query = Comment.remove({ _id: id });
query.exec();
remove()
telah ditinggalkan. Gunakan deleteOne()
, deleteMany()
ataubulkWrite()
.
Kode yang saya gunakan
TeleBot.deleteMany({chatID: chatID}, function (err, _) {
if (err) {
return console.log(err);
}
});
(node:9132) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
Untuk menggeneralisasi, Anda dapat menggunakan:
SomeModel.find( $where, function(err,docs){
if (err) return console.log(err);
if (!docs || !Array.isArray(docs) || docs.length === 0)
return console.log('no docs found');
docs.forEach( function (doc) {
doc.remove();
});
});
Cara lain untuk mencapai ini adalah:
SomeModel.collection.remove( function (err) {
if (err) throw err;
// collection is now empty but not deleted
});
Hati-hati dengan findOne dan hapus!
User.findOne({name: 'Alice'}).remove().exec();
Kode di atas menghapus SEMUA pengguna yang bernama 'Alice' alih-alih yang pertama saja.
Omong-omong, saya lebih suka menghapus dokumen seperti ini:
User.remove({...}).exec();
Atau berikan panggilan balik dan hilangkan eksekutif ()
User.remove({...}, callback);
model.remove({title:'danish'}, function(err){
if(err) throw err;
});
Jika Anda mencari hanya satu objek yang akan dihapus, Anda dapat menggunakan
Person.findOne({_id: req.params.id}, function (error, person){
console.log("This object will get deleted " + person);
person.remove();
});
Dalam contoh ini, Mongoose akan dihapus berdasarkan pencocokan req.params.id.
Untuk menghapus dokumen, saya lebih suka menggunakan Model.remove(conditions, [callback])
Silakan lihat dokumentasi API untuk dihapus: -
http://mongoosejs.com/docs/api.html#model_Model.remove
Untuk kasus ini, kode akan menjadi: -
FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})
Jika Anda ingin menghapus dokumen tanpa menunggu tanggapan dari MongoDB, jangan melewati callback, maka Anda perlu memanggil exec pada Query yang dikembalikan
var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();
Anda bisa menggunakan kueri langsung di dalam fungsi hapus, jadi:
FBFriendModel.remove({ id: 333}, function(err){});
Anda selalu dapat menggunakan fungsi bawaan Mongoose:
var id = req.params.friendId; //here you pass the id
FBFriendModel
.findByIdAndRemove(id)
.exec()
.then(function(doc) {
return doc;
}).catch(function(error) {
throw error;
});
Pembaruan: .remove()
disusutkan tetapi ini masih berfungsi untuk versi yang lebih lama
YourSchema.remove({
foo: req.params.foo
}, function(err, _) {
if (err) return res.send(err)
res.json({
message: `deleted ${ req.params.foo }`
})
});
menggunakan metode remove () yang dapat Anda hapus.
getLogout(data){
return this.sessionModel
.remove({session_id: data.sid})
.exec()
.then(data =>{
return "signup successfully"
})
}
Ini bekerja untuk saya, coba saja ini:
const id = req.params.id;
YourSchema
.remove({_id: id})
.exec()
.then(result => {
res.status(200).json({
message: 'deleted',
request: {
type: 'POST',
url: 'http://localhost:3000/yourroutes/'
}
})
})
.catch(err => {
res.status(500).json({
error: err
})
});
Model.remove
sudah tidak digunakan lagi
Sesuai Jawaban Samyak Jain, saya menggunakan Async Tunggu
let isDelete = await MODEL_NAME.deleteMany({_id:'YOUR_ID', name:'YOUR_NAME'});
Saya sangat suka pola ini di aplikasi async / menunggu yang mampu Express / Mongoose:
app.delete('/:idToDelete', asyncHandler(async (req, res) => {
const deletedItem = await YourModel
.findByIdAndDelete(req.params.idToDelete) // This method is the nice method for deleting
.catch(err => res.status(400).send(err.message))
res.status(200).send(deletedItem)
}))
db.collection.remove(<query>,
{
justOne: <boolean>,
writeConcern: <document>
})