如何在猫鼬的findOne查询中进行逻辑AND?

时间:2019-01-27 11:26:34

标签: javascript node.js mongodb mongoose

在猫鼬的findOne函数中,逻辑AND操作存在问题。

提供给该功能的日期正确,我正在检查并记录结果。我仍在获取OR而不是AND操作。

static checkAvaiable(date, time, number) {
    return new Promise((resolve, reject) => {
        console.log(date, time)
        TableModel.findOne({
            $and: [
                {
                    'reservations.date': date,
                    'reservations.time': time,
                    number
                }
            ]
        }, { 'reservations.$': 1 }, (err, result) => {

            if (result.reservations.length != 0) {
                reject()
            }

            if (err) {
                reject()
            }
            resolve()
        })
    })
}

1 个答案:

答案 0 :(得分:0)

您错误地使用了$and运算符,请参阅docs。 有人说,您似乎根本不需要使用$and运算符。您可以仅按参数过滤,默认行为是使用and逻辑。

static checkAvaiable(date, time, number) {
    return new Promise((resolve, reject) => {
        console.log(date, time)
        TableModel.findOne({
            $and: [
                {
                    'reservations.date': date
                },
                {
                    'reservations.time': time
                },
                {
                    number
                }
            ]
        }, { 'reservations.$': 1 }, (err, result) => {

            if (result.reservations.length != 0) {
                reject()
            }

            if (err) {
                reject()
            }
            resolve()
        })
    })
}