Выход объекта & amp; typeof () тот же, но == операнд, не работающий с findIndex () [duplicate]

Обертка вокруг GNU ld, которая не поддерживает скрипты компоновщика

. Некоторые .so-файлы на самом деле являются GNU ld ссылками-компоновщиками , например. Файл libtbb.so является текстовым файлом ASCII с этим содержимым:

INPUT (libtbb.so.2)

Некоторые более сложные сборки могут не поддерживать это. Например, если вы включите -v в параметры компилятора, вы увидите, что mainwin gcc wrapper mwdip отбрасывает файлы команд сценария компоновщика в расширенном списке списков библиотек для ссылки. Простая работа вместо файла командной строки ввода сценария компоновщика вместо копии (или символической ссылки), например

cp libtbb.so.2 libtbb.so

Или вы можете заменить аргумент -l полным путем .so, например вместо -ltbb сделать /home/foo/tbb-4.3/linux/lib/intel64/gcc4.4/libtbb.so.2

135
задан Nahn 4 November 2013 в 19:49
поделиться

5 ответов

Mongoose использует собственный драйвер mongodb, который использует настраиваемый тип ObjectID. Вы можете сравнить ObjectIDs с методом .equals(). С вашим примером, results.userId.equals(AnotherMongoDocument._id). Тип ObjectID также имеет метод toString(), если вы хотите сохранить стробированную версию ObjectID в формате JSON или файл cookie.

Если вы используете ObjectID = require("mongodb").ObjectID (требуется родная библиотека mongodb ) вы можете проверить, является ли results.userId допустимым идентификатором с results.userId instanceof ObjectID.

Etc.

235
ответ дан cjohn 24 August 2018 в 09:30
поделиться

преобразование идентификатора объекта в строку (с использованием метода toString ()) выполнит задание.

6
ответ дан Dila Gurung 24 August 2018 в 09:30
поделиться

Я столкнулся с одной и той же проблемой, и я просто решил проблему с помощью JSON.stringify() следующим образом: -

if (JSON.stringify(results.userId) === JSON.stringify(AnotherMongoDocument._id)) {
        console.log('This is never true');
}
0
ответ дан Jitendra 24 August 2018 в 09:30
поделиться

ObjectID s - объекты, поэтому, если вы просто сравниваете их с ==, вы сравниваете их ссылки. Если вы хотите сравнить их значения, вам нужно использовать метод ObjectID.equals:

if (results.userId.equals(AnotherMongoDocument._id)) {
    ...
}
50
ответ дан JohnnyHK 24 August 2018 в 09:30
поделиться

Принимаемые ответы действительно ограничивают то, что вы можете сделать с вашим кодом. Например, вы не сможете найти массив из Object Ids, используя метод equals. Вместо этого было бы разумнее всегда приводить строку и сравнивать ключи.

Вот пример ответа в случае, если вам нужно использовать indexOf() для проверки внутри массива ссылок для определенного идентификатора. Предположим, что query - это запрос, который вы выполняете, предположим, что someModel является моделью mongo для идентификатора, который вы ищете, и, наконец, предположим, что results.idList - это поле, в котором вы ищете свой идентификатор объекта.

query.exec(function(err,results){
   var array = results.idList.map(function(v){ return v.toString(); });
   var exists = array.indexOf(someModel._id.toString()) >= 0;
   console.log(exists);
});
7
ответ дан r3wt 24 August 2018 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: