[英]How do I call remove() within mongoose query .find()?
我正在用Mongoose查询一个叫做“命令”的整个Mongodb集合。 然后,我得到订单创建和当前日期之间的天数差异。 当它已经过一定天数时,我想从数据库中删除文档(订单)。
我在for循环中迭代订单,所以当循环找到一个x天数差异的订单时,我只是试着调用'orders [i] .remove()'。 这是提供的代码块的底部。
我注意到'remove()'方法在Model.prototye而不是Document.prototype上。 但我已经看到了其他代码块,建议在'find()'查询中调用'remove()'。
Order.find({},'-_id -line_items -shipping_lines', function(err, orders) {
if(err) {
console.log(err);
}
for(i = 0; i < orders.length; i++) {
// Taken from Punit Jajodia https://www.toptal.com/software/definitive-guide-to-datetime-manipulation
const dateOfOrder = orders[i].date;
const now = new Date();
const datefromAPITimeStamp = (new Date(dateOfOrder)).getTime();
const nowTimeStamp = now.getTime();
const microSecondsDiff = Math.abs(datefromAPITimeStamp - nowTimeStamp );
// Number of milliseconds per day =
// 24 hrs/day * 60 minutes/hour * 60 seconds/minute * 1000 msecs/second
const daysDiff = Math.floor(microSecondsDiff/(1000 * 60 * 60 * 24));
console.log(daysDiff);
// If it is exactly 15 days from the triggering order, post the new order
if (daysDiff === 15) {
// ?consumer_key=${process.env.CONS_KEY}&consumer_secret=${process.env.CONS_SEC}
//console.log(orders[i]);
axios.post(baseUrl + `/orders?consumer_key=${process.env.CONS_KEY}&consumer_secret=${process.env.CONS_SEC}`, orders[i])
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
// console.log(error);
})
.then(function () {
});
}
if (daysDiff === 0) {
//Remove orders that are 25 days old from the db
orders[i].remove(function(err,result) {
if(err) {
console.log(err);
}
console.log(result);
});
}
}
});
我希望在if语句真实时删除文档。 但是我得到了这个错误“消息:'没有在文档中找到_id!',名称:'MongooseError'”我也在查看mlab中的订单,它们肯定有'_id'。
我猜您的删除查询格式不正确。 尝试如下:
if (daysDiff === 0) {
//Remove orders that are 25 days old from the db
Order.remove({_id: orders[i]._id },function(err,result) {
if(err) {
console.log(err);
}
console.log(result);
});
}
例如:要从订单集合中删除 _id字段等于“something”的特定文档,如下所示。
db.users.remove( { _id : "something" } )
好。 这是过去两天最大的一面:
在我的.find()
查询中,我故意(意外地) .find()
了_id
:
Order.find({},'-_id -line_items -shipping_lines', function(err, orders) { ...
这导致orders[i]._id
在我的for循环中未定义。 我们活到另一天的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.