knex bookshelfjs javascript bookshelf.js knex.js

javascript - knex - bookshelfjs count



¿Cómo hacer un bucle en las filas después de.fetchAll Bookshelf js+knex js? (6)

Tengo una base de datos MySQL que necesito consultar desde node.js

Estoy usando bookshelf y knex para esto.

Quiero obtener el contenido de una tabla; he definido una tabla en mi archivo model.js. Estoy intentando la consulta de esta manera:

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

Me gustaría saber cómo hacer un bucle sobre resData porque debería ser varias filas.

La salida de la consola se ve así: no veo una lista de filas a las que puedo recorrer ... ¿Qué me falta?

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 }


Encontré la respuesta (la documentación es muy críptica, espero que esto ayude a otros)

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


La clase de Collection tiene un conjunto de métodos lodash para esto.

Puedes usar collection.forEach esta manera:

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

Echa un vistazo a los docs , hay muchos otros métodos útiles para la Collection .


La respuesta es simple, pruebe este console.log(resData.toJSON())


Si no quieres usar lodash, puedes hacer esto:

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


simplemente consola con los atributos.

console.log(resData.attributes);

Obtendrá resultados Visas de objetos.