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.
Model.CompletedSentences.fetchAll().then(function (resData) {
console.log(resData.serialize())
})
la salida está en formato json