У меня такой сценарий:
В своем тесте я объявляю переменную
const query = {
where: { publishedCount: { inq: [2, 3] } },
};
и когда я проверяю, является ли переменная объектом, используя .constructor === Object, я получаю истину
console.info(query.constructor === Object); // true
В следующей строке я передаю ту же переменную функции, и внутри этой функции сравнение возвращает ложный.
app.models.Group.find(query);
function find(query) {
console.info(query) // prints: where: { publishedCount: { inq: [2, 3] } },
console.info(query.constructor) // prints: function Object() {}
console.info(query.constructor === Object) // FALSE
}
Мой код работает на Node v8.10.0 и Jest runner v23.4.2. В обоих случаях запрос печати возвращает правильный объект, а печать query.constructor возвращает function Object() {}.
Я сделал простую проверку с помощью JSBIn, и сравнение вернулось два раза. https://jsbin.com/wotuperode/edit?js,console
Что это происходит?
PS. Я не могу изменить способ проверки типа объекта, потому что одна из библиотек из node_modules проверяет таким образом
ОБНОВЛЕНИЕ 1
Я вызываю функцию find из библиотеки loopback. Эта функция поиска доступна во всех моделях данных в вашем приложении.
https://github.com/strongloop/loopback-datasource-juggler/blob/master/lib/dao.js#L1897
Сравнение, используемое библиотекой, находится здесь: https://github.com/strongloop/loopback-connector-postgresql/blob/master/lib/postgresql.js#L554 (библиотека добавляет соединитель postgres в loopback)
Мой полный код
describe("Tests", () => {
it("update array of elements", async () => {
// creating objects etc
...
const query = {
where: { publishedCount: { inq: [2, 3] } },
};
await app.models.Group.find(query); // my code has await but even without await the comparison still returns false
...
// expects etc
});
});
ОБНОВЛЕНИЕ 2
Это происходит только в моем тесты, когда я запускаю код с помощью Шутка runner.
Ваш код когда-либо создает еще один объект query? Как он создает этот объект?
«одна из библиотек из node_modules проверяет таким образом» - не могли бы вы подробнее рассказать о вашей реальной проблеме, включая библиотеку, которую вы вызываете (со ссылкой на код и / или документы), а также ваш фактический код? Нам нужен минимальный воспроизводимый пример - jsbin, который не воспроизводит проблему, не поможет.
@Zenoo Я обновил свой вопрос. В обоих случаях запрос выглядит одинаково.
@evolutionxbox нет, я выполняю функцию поиска в следующей строке сразу после создания объекта запроса
Невозможно ответить, не увидев рассматриваемого кода ...
@AxelF Я обновился, посмотрите сейчас
@Bergi Проверьте сейчас, я добавил как можно больше. Он работает на Node, поэтому мне нужно подготовить репозиторий. Я могу сделать это позже, потому что сейчас у меня нет на это времени



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пробовали логировать
queryв своей функции?