Когда мой агрегат ничего не находит и данные [], он все равно решает мою функцию.
Как я могу проверить, действительно ли мой агрегат что-то нашел?
my if (!data) {
не работает
usersTable.aggregate (
{
$match:{
_id: UserID
}
}
,function (err, data) {
if (err) {
throw new Error('findUser: ' + err);
} else {
console.log("found: " + JSON.stringify(data, null, 4));
if (!data) {
throw new Error('ERR: Unknown userID in call of newBooking');
}
resolve("OK");
};
});
Решил это так, if (!data) {
никогда не будет работать, потому что даже когда mongo возвращает пустой объект, его все еще объект.
Вместо этого я нашел эту функцию
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
Так что теперь я могу использовать if (isEmpty(data)) {
и он отлично работает.