Таким образом, в общем случае mon goose findById*'s
будет принимать один _id
в качестве фильтра, если вы передадите внутренне строку, mon goose преобразует строку в _id
, поэтому вы не можете передать ей массив - если вы хотите работать с findByIdAndRemove
- вам нужно l oop на _id
и сделать несколько вызовов БД (удаляя каждый документ), также я немного изменил ваш код, зачем проверять !err
? скорее вы можете сначала проверить if(err)
, а затем проверить, чтобы записать результат. Попробуйте это:
Попробуйте это:
export function removeReferral(ids) {
return new Promise((resolve, reject) => {
ReferralLink.deleteMany({ _id: { $in: (ids).map(mongoose.Types.ObjectId) } }, (err, link) => {
console.log('delete referrals response : ', link)
if (err) {
resolve({
success: false,
message: "Unable to remove referral",
data: err
});
} else if (link.n > 0) { /** Checking if atleast one _id in input array is removed,
Or if you need to check all are deleted then n == array.length */
resolve({
success: true,
message: "Referral removed successfully",
data: null
});
} else {
resolve({
success: true,
message: "Not able to remove Referrals successfully",
data: null
});
}
});
});
}