J'ai une base de données MySQL que je dois interroger de node.js
J'utilise bookshelf et knex pour cela.
Je veux obtenir le contenu d'une table - j'ai défini une table dans mon fichier model.js. Je tente la requête comme ceci:
//select * from completedSentences;
Model.CompletedSentences.fetchAll().then(function (resData) {
console.log(resData)
})
Je voudrais savoir comment boucler resData car il devrait y avoir plusieurs lignes.
La sortie de la console ressemble à ceci: Je ne vois pas une liste de lignes sur lesquelles je peux faire une boucle.
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 }
J'ai trouvé la réponse (la documentation est très cryptée, espérons que cela aidera les autres)
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)
})
})
Model.CompletedSentences.fetchAll().then(function (resData) {
console.log(resData.serialize())
})
la sortie est au format json
La classe Collection
dispose d'un ensemble de méthodes lodash pour cela.
Vous pouvez utiliser collection.forEach
de cette façon:
new Model.CompletedSentences().fetchAll().then(function (completedSentences) {
completedSentences.forEach(function (model) {
console.log(model.attributes)
})
})
Consultez les docs , il existe de nombreuses autres méthodes utiles pour Collection
.
Si vous ne voulez pas utiliser lodash, vous pouvez faire ceci:
new Model.CompletedSentences().fetchAll().then(function (resData) {
resData.models.forEach( function (model) {
console.log(model.get('attribute');
console.log(model.related('sth').get('attribute');
})
})
il suffit simplement de console avec ses attributs.
console.log(resData.attributes);
vous obtiendrez des résultats étau objets.