Meteor и GroundDB: поиск по идентификатору, не возвращающий никаких записей

Я пытаюсь реализовать автономную БД для своего приложения Meteor и решил использовать "GroundDB". Сейчас я все еще нахожусь на начальной стадии обучения, но у меня есть проблема, для которой я не могу найти решение:

при использовании.find в моих оффлайн-коллекциях я не могу найти по идентификатору. Все остальные свойства работают. Типичный объект из моей базы данных mongo будет выглядеть так:

{_id:"…someid", name:“test”, description:“test”, systemId:"…someID"};

Я могу найти по имени, описанию и даже по идентификатору системы, но поиск по _id всегда дает 0 результатов.

Что могло вызвать такое поведение?

Это только для GroundDB. Поиск по _id в базе данных mongo работает. Также есть поле "_id" в GroundDB! При выполнении.find({}) без фильтров я вижу, что все свойства, включая поле _id, копируются в Groundb.

редактировать

Мой текущий код относительно GroundDB выглядит следующим образом:

ExampleCol = new Mongo.Collection('exampleCol');


if (Meteor.isServer) {
  Meteor.publish('exampleCol', functionexampleColPublication() {
    return ExampleCol.find();
  });
}

На клиенте:

ExampleCol_GROUND = new Ground.Collection('exampleCol'
  });
ExampleCol_GROUND.observeSource(ExampleCol.find());

А потом: ExampleCol_GROUND.find()возвращает все записи, которые также находятся в ExampleCol. Я просто не могуExampleCol_GROUND.find({_id:"..."}) (0 результатов)

1 ответ

Решение

Итак, я нашел решение, не уверен, что оно самое элегантное. Похоже, GroundDB активно ищет поле _id и пытается использовать его в качестве селектора. Я не уверен, что именно не работает, я думаю, это как-то связано с моим _id-полем, являющимся строкой.

Однако следующие работы:

вместо простого ExampleCol_GROUND.find({_id:"..."})

Теперь я использую оператор "где":

ExampleCol_GROUND.find({$where: function() {
                   return this._id ==  "..someId.."
                }});
Другие вопросы по тегам