Я вставленной коллекцией в MongoDB с помощью сценария Python. Типичный документ выглядит следующим образом:Метеор документ ID визуализируются с мусорными символами
{ _id: { _str: '571eae67ab2c0d18c8509d0f' },
something: '6.10',
area: '1805.80'}
В сценарии Python, идентификатор не был установлен явно, это _id
что сгенерировал MongoDB.
Сейчас этот _id
визуализируется в шаблонах так:
571eae67ab2c0d18c8509d0f""{}
И в URL-адресов, а также. Поэтому, когда я открываю /record/571eae67ab2c0d18c8509d0f""{}
, функция findOne запрашивает {_id: '571eae67ab2c0d18c8509d0f""{}'}
и ничего не находит.
Что я должен исправить в этой схеме?
Я посмотрел другие вопросы здесь, и попытался это:
= this._id.toHexString
= _id.toHexString
= _id._str
Но это не выводит ничего.
Вы указываете 'idGeneration:«вариант MONGO'' при создании коллекции Монго (в Meteor)? Есть ли сочетание строк и ObjectID '_id's? Если идентификаторы не имеют значения (т. Е. Не имеют ссылок нигде и т. Д.), Рассмотрите их замену на строки. – MasterAM
@MasterAM нет, я этого не сделал. И '_id' такие же в коллекции. Я также пробовал это: ввел оболочку Mongo, получил объект, удалил '_id' и снова ввел его. Новый '_id' был того же типа, с' _str' prop. –
Это потому, что MongoDB автоматически генерирует 'ObjectId'. Вы должны явно указать '_id', чтобы предотвратить это поведение. Если ваш '_id' в этой коллекции всегда будет 'ObjectID', вы можете указать это для Meteor, как я упоминал в предыдущем комментарии. Если вы хотите, чтобы они были строками, вы можете попытаться сделать одноразовое преобразование с помощью Meteor и изменить свою подпрограмму Python для создания идентификаторов строк. – MasterAM