Seperti yang telah Anda catat, menggunakan yang berikut ini tidak akan mengembalikan dokumen:
Data.find(query).remove().exec(function(err, data) {
// data will equal the number of docs removed, not the document itself
}
Dengan demikian, Anda tidak dapat menyimpan dokumen di ActionCtrl
menggunakan pendekatan ini.
Anda dapat mencapai hasil yang sama menggunakan pendekatan asli Anda, atau menggunakan beberapa bentuk iterasi. Pustaka aliran kontrol seperti async mungkin berguna untuk menangani panggilan async. Itu tidak akan mengurangi kode Anda, tetapi akan mengurangi kueri. Lihat contoh:
Data.find(query, function(err, data) {
async.each(data, function(dataItem, callback) {
dataItem.remove(function(err, result) {
ActionCtrl.saveRemove(result, callback);
});
});
});
Jawaban ini mengasumsikan bahwa ActionCtrl.saveRemove()
implementasi dapat mengambil dokumen individual sebagai parameter, dan dapat menjalankan panggilan balik dari async.each
lingkaran. async.each
membutuhkan panggilan balik untuk dijalankan tanpa argumen di akhir setiap iterasi, jadi Anda idealnya menjalankan ini di akhir .saveRemove()
Perhatikan bahwa remove
metode pada dokumen individual akan benar-benar mengembalikan dokumen yang telah dihapus.