Meteor document ID отображается с символами мусора

Я вставил коллекцию в MongoDB со скриптом Python. Типичный документ выглядит следующим образом:

{       _id: { _str: '571eae67ab2c0d18c8509d0f' },
  something: '6.10',
       area: '1805.80'}

В скрипте Python id не был задан явно, это _idто, что MongoDB создал.

Теперь _idэто отображается в шаблонах, как это:

 571eae67ab2c0d18c8509d0f""{}

И в URL-адресах. Поэтому , когда я открываю/record/571eae67ab2c0d18c8509d0f""{}, функция findOne запрашивает {_id: '571eae67ab2c0d18c8509d0f""{}'}и ничего не находит.

Что я должен исправить в этой схеме?

Я посмотрел другие вопросы здесь, и попытался это:

= this._id.toHexString
= _id.toHexString
= _id._str

Но это ничего не дает.

1 ответ

  1. Используя вспомогательный и отладочный вывод, я обнаружил, что _idне содержит никакого идентификатора объекта, но строку. Проблема была с EasySearch, который выравнивает _idдля своих целей.

    Вот описание: https://github.com/matteodem/meteor-easy-search/issues/347#issuecomment-152793656

    Я испытываю проблему, когда поисковый запрос добавляется, чтобы закончить все идентификаторы.
    Когда нет ничего в поле ввода, он просто добавляет пустой «» в конце идентификатора

    Введите описание изображения здесь

    И если есть какой-либо вход, он вставляется в кавычки.

    Введите описание изображения здесь

    Ответ:

    Столкнулся с той же «проблемой» вчера, оказывается, вы должны использовать _originalId, как говорит doc :

    EasySearch возвращает документы при использовании поиска, которые имеют те же поля, что и исходные, но _id отличается. Если требуется внести изменения в документы результатов поиска по идентификатору, можно использовать _ _ originalId, содержащий исходный _id документа. Так коллекция.findOne (doc._id)не будет работать, пока коллекция.findOne (doc.__originalId).
    Добавленный поиск _id, вероятно, используется внутри этого пакета