Это мой первый раз с дербиями, не знаю, являюсь ли я глупым или это недостаток документации. У меня есть модель под названием «книги», и я просто пытаюсь показать список книг.не удалось отобразить список документов в представлении, используя derbyjs
вот мой код:
module.exports = {
properties: {
title: {type: 'string', minLength: 6},
author: {type: 'integer', minimum: 0},
image: {type: 'string'},
status: {type: 'integer', minimum: 0, maximum: 1}, // 1 read, 0 wants to read
comment: {type: 'string'}
},
required: ['title']
}
и список схем
module.exports = {
schemas: {
auths: require('./model/auths'),
products: require('./model/products'),
books: require('./model/books')
}
}
индекс JS
app.get('/shelf', function(page, model, params, next){
model.subscribe('books', function(){
var book = model.at('books.669374b5-8470-4f3a-a25f-0995a5a92a7a');
model.ref('_page.book', book);
page.render('home');
});
});
я рассчитывать на "книги" в представлении, поэтому я написал {{каждый}} следующим образом
{{ each books as #b}}
{{ #b.title }}
{{/each}}
, но ничего не отображается, хотя это работает отлично и делают, как и ожидалось
{{ _page.book.title }}
также на веб-консоли, это работает отлично, и показывает 3 книги
app.model.get('books')
уведомление: я добавил книги через веб-консоль, что-то вроде этого
app.model.add('books', {title: 'something'})
внутри функции подписываться, я попытался
var books = model.get('books');
model.ref('_page.books', books);
но подняться ошибка вверх
идея, что я делаю не так? мне очень нравятся derbyjs, но это удерживает меня в течение нескольких дней.
Вы только что сделали свой день, спасибо :) – emostafa
Чтобы объяснить это немного больше, 'books' - это коллекция, а коллекции представлены как объекты в модели. В шаблонах Derby блоки '{{each}}' могут только перебирать массивы и * не * над объектами. Как отметил Кайл, вы можете использовать refList для создания массива документов в коллекции, соответствующей результатам запроса. Кроме того, вы можете использовать model.filter для сопоставления коллекции в массив. –
что бы я хотел спросить, мне всегда нужно использовать подписку, прежде чем я буду использовать model.get()? потому что первый метод ответа не работал для меня, но второй работает отлично. – emostafa