如何在.fetchAll Bookshelf js + knex js之后循环遍历行?

时间:2015-11-24 23:48:15

标签: javascript bookshelf.js knex.js

我有一个MySQL数据库,我需要从node.js

查询

我正在使用书架和knex。

我想获取表的内容 - 我在model.js文件中定义了一个表。我正在尝试这样的查询:

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 }

我想知道如何循环resData,因为它应该是多行。

控制台的输出如下所示:我没有看到可以循环的行列表..我缺少什么?

{{1}}

6 个答案:

答案 0 :(得分:20)

我找到了答案(文档非常含糊,希望这有助于其他人)

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)
        })

    })

答案 1 :(得分:11)

Model.CompletedSentences.fetchAll().then(function (resData) {
        console.log(resData.serialize())
    })

输出为json格式

http://bookshelfjs.org/#Model-instance-serialize

答案 2 :(得分:5)

Collection类有一组lodash方法。

您可以这样使用collection.forEach

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

查看docsCollection还有许多其他有用的方法。

答案 3 :(得分:3)

如果你不想使用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');
    })

})

答案 4 :(得分:0)

只需使用它来控制属性。

console.log(resData.attributes);

你将获得对象vise的结果。

答案 5 :(得分:-2)

答案很简单,试试吧 console.log(resData.toJSON())