Как передать внешние переменные для функции, назначенной для '$ ​​where'

Я хочу использовать $where для сравнения двух полей в одном документе. Но условие сравнения можно изменить.

Например:

let x = 1;
db.test.find({$where: foo});
function foo() {
    return this.a - this.b > x;
}

И возникает ошибка:

ReferenceError: x is not defined

Как передать это значение вне функции?

если это ваш точный код, то x не должно быть "не определено"

Bravo 26.10.2018 05:44

@Bravo Спасибо за ваш комментарий. Это пример, и мой код более сложный. Может быть, мне сначала стоит попробовать этот пример, чтобы проверить значение x

Will Goh 26.10.2018 05:55
2
2
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы хотите объявить переменную и хотите использовать ее внутри функции mongoDb, вы можете сделать это следующим образом

db.test.find({$where: function() {
 let x = 1;
 return this.a - this.b > x;
}})

Спасибо за ваш совет. Здесь x на самом деле исходит от клиента, и я не знаю его значения. Объявление x в функции mongoDB может не соответствовать потребностям.

Will Goh 26.10.2018 07:48
Ответ принят как подходящий

Я решил свой вопрос. Здесь я использую строку шаблона, чтобы передать значение x функции.

let x = 1;
db.test.find(`this.a - this.b > ${x}`);

Другие вопросы по теме