2012-06-05 2 views
1

Я столкнулся с двумя проблемами с Дерби и Монго. Я исхожу из фона MySQL и Redis, так что, возможно, я просто делаю что-то неправильно?Результаты от MongoDB

1) Кажется, я не могу найти Id, тип которого ObjectId.

model.query("users").byKey(params.userId); 

будет соответствовать только записи, в которых _id является строкой .. Что я думаю, все будет в порядке, за исключением случаев, когда данные «обновляется» Racer будет создать новую запись с ObjectId _id! Поэтому в основном я не могу извлечь документ по id, который я вставил с помощью Racer!

2) Каждый раз, когда я делаю запрос я получаю обратно объект объектов, таких как:

{ '$spec': true, 
    '4fcd4c8e6c8c89d97ed90f4a': { "username": ... }, 
    '4fcd4c8e6c8c89d97ed90f4b': { "username": ... }, 

Что означает, что я должен преобразовать его в список объектов. Я написал функцию, которая создает список _id, а затем присваивает ее переменной модели для использования с refList. Это похоже на такой взлом, это не может быть правильным способом.

+0

Вы также спросили в группе go derbyjs google? https://groups.google.com/forum/?fromgroups#!forum/derbyjs – studgeek

ответ

2

Запросов были только существенно обновлены в версии 0.3.11. Модели теперь имеют встроенные методы model.filter() и model.sort(), которые заменят необходимость вручную создавать список ключей и выпустить гораздо более эффективные события обновления массива в Derby.

См. Queries README.

0

Я не derbyjs пользователя, однако здесь некоторые предложения по поводу ваших проблем:

1) Что касается «Идентификатор ObjectId»?

Кажется, что идентификатор должен быть объектом, см DerbyDoc/Persistance:

Racer пути переводятся в коллекции баз данных и документов, используя естественное отображение: collection.documentId.document

...

// первые и вторые сегменты в корневых путях должны быть объектами

Как вы сохраняете свои данные? Как общий совет, полный воспроизводимый код улучшит помощь, которую вы можете получить.

2) «Мне нужно преобразовать результат запроса в список»?

Из моего опыта работы с другими двигателями действительно кажется, что вы не используете правильный подход. Все будет зависеть от того, что вы хотите сделать с результатом, но один очень общий подход - работать с списком объектов и, наконец, получать атрибуты в цикле шаблона. В вашем случае это будет означать передачу непосредственно результата запроса на вызов page.render. См DerbyDoc/sections

Надеется, что это помогает

Алексису

+0

На # 1, я думаю, вы ссылаетесь на что-то другое, то есть на модельный путь, который уже установлен. Проблема в том, что когда я передаю «id» в model.query, он, похоже, выполняет эквивалент db.users.find ({«_ id»: «12345»}) по сравнению с db.users.find ({"_ id": новый ObjectId ("12345")}). –

+0

Что касается № 2, Meteor (аналогичная структура) принимает объект объектов, который, как и ожидалось, будет выглядеть так, как я могу ожидать от поведения Дерби. Например, с помощью KnockoutJS необходимо преобразовать объекты в список объектов, прежде чем они смогут пройти через них в шаблоне, но я надеюсь, что кто-то, у кого есть опыт работы с Derby, может привести пример правильного пути (если есть один) делать это. –

+0

Хорошо, как я уже сказал, я не являюсь пользователем derbyjs, поэтому надеюсь, что вы получите ответы (хотя, похоже, здесь не так много последователей дербижей) – Alexis

Смежные вопросы