Подтвердить что ты не робот

Как перебирать строки после .fetchAll Bookshelf js + knex js?

У меня есть база данных MySQL, которая мне нужна для запроса из node.js

Я использую книжную полку и knex для этого.

Я хочу получить содержимое таблицы - я определил таблицу в файле model.js. Я пытаюсь выполнить запрос следующим образом:

//select * from completedSentences;
Model.CompletedSentences.fetchAll().then(function (resData) {
        console.log(resData)
    })

Я хотел бы знать, как перебрать resData, потому что это должно быть несколько строк.

Вывод консоли выглядит следующим образом: я не вижу список строк, которые я могу перебрать. Что мне не хватает?

CollectionBase {
  model:
   { [Function]
     NotFoundError: [Function: ErrorCtor],
     NoRowsUpdatedError: [Function: ErrorCtor],
     NoRowsDeletedError: [Function: ErrorCtor] },
  length: 1,
  models:
   [ ModelBase {
       attributes: [Object],
       _previousAttributes: [Object],
       changed: {},
       relations: {},
       cid: 'c4',
       id: 1 } ],
  _byId:
   { '1':
      ModelBase {
        attributes: [Object],
        _previousAttributes: [Object],
        changed: {},
        relations: {},
        cid: 'c4',
        id: 1 },
     c4:
      ModelBase {
        attributes: [Object],
        _previousAttributes: [Object],
        changed: {},
        relations: {},
        cid: 'c4',
        id: 1 } },
  _knex: null,
  _events: {},
  _eventsCount: 0 }
4b9b3361

Ответ 1

Я нашел ответ (документация очень загадочна, надеюсь, что это поможет другим)

new Model.CompletedSentences().fetchAll().then(function (resData) {
        _.each(resData.models, function (model) { //I am looping over models using underscore, you can use any loop
            console.log(model.attributes)
        })

    })

Ответ 3

В классе Collection есть набор методов lodash для этого.

Вы можете использовать collection.forEach следующим образом:

new Model.CompletedSentences().fetchAll().then(function (completedSentences) {
        completedSentences.forEach(function (model) {
            console.log(model.attributes)
        })    
    })

Ознакомьтесь с docs, есть много других полезных методов для Collection.

Ответ 4

Если вы не хотите использовать lodash, вы можете сделать это:

new Model.CompletedSentences().fetchAll().then(function (resData) {
    resData.models.forEach( function (model) { 
        console.log(model.get('attribute');
        console.log(model.related('sth').get('attribute');
    })

})