Voiles JS ligne de Flottaison jointure de plusieurs modèles
Salut, je vais essayer de joindre plusieurs tables avec méthode peupler, j'ai googlé et je ne pouvais pas trouver
moyen efficace de le faire, je ne veux pas de requêtes db à plusieurs reprises pour construire le résultat, est-il possible de résoudre ce problème avec des voiles version "~0.10.0-rc7" je suis en train de construire arrêter de grand projet à plus de centaines de tables.
var co = {
adapter: 'someMysqlServer',
migrate:'safe',
autoCreatedAt: false,
autoUpdatedAt: false,
autoPK:false,
attributes:{
id:{
type:"int",
primaryKey: true,
autoIncrement: true
},
code:"string",
priority :"int",
co_group_c_id :"int",
timezone_c_id :"int",
lang_c_id :"int",
currency_c_id :"int",
name_used :"string",
name_official :"string",
co_tax_no :"int",
co_vat_no :"int",
co_vat_reg :"int",
co_reg_record :"string",
co_representative :"string",
co_addresses:{
collection: "co_address",
via: "co_user_id"
},
}
};
module.exports = co;
var co_address = {
adapter: 'someMysqlServer',
migrate:'safe',
autoCreatedAt: false,
autoUpdatedAt: false,
autoPK:false,
attributes: {
id:{
type:"int",
primaryKey: true,
autoIncrement: true,
},
address_c_id:"int" ,
address_street_first: "string",
address_street_second: "int",
address_street_third: "int",
address_postalcode: "string",
address_city: "string",
co_user_id: {
model: 'co_user'
},
co_id: {
model: 'co'
},
co_address_opening_hours:{
collection: "co_address_opening_hours",
via: "co_address_id"
},
}
};
module.exports = co_address;
var co_address_opening_hours = {
adapter: 'someMysqlServer',
migrate:'safe',
autoCreatedAt: false,
autoUpdatedAt: false,
autoPK:false,
attributes:{
id:{
type:"int",
primaryKey: true,
autoIncrement: true
},
day_c_id: "int",
time_from: "datetime",
time_to :"datetime",
co_address_id: {
model: 'co_address'
}
}
};
module.exports = co_address_opening_hours;
//controller
get_co:function(req,res){
co.find()
.populate("co_addresses")
.populate("co_address_opening_hours")
.exec(function(e, company) {
if(e) console.log(e);
console.log(company);
res.json(company);
})
OriginalL'auteur Sandro Adamia | 2014-05-29
Vous devez vous connecter pour publier un commentaire.
Dans SailsJS 0.10+ vous pouvez utiliser le modèle des associations pour faire des jointures. Vous pouvez en lire plus à ce sujet ici: http://sailsjs.com/documentation/concepts/models-and-orm/associations
Fondamentalement, vous devez d'abord définir l'association de votre modèle;
Dans le code ci-dessus
someOtherModel
contient de l'association (relation) àsomeModel
. Pour faire une requête de jointure, vous pouvez utiliser.populate()
méthode. Par exemple récupérer tous les someOtherModel entités et remplir associatif propriétés;Pour MySQL et PSQL cartes il y a aussi .méthode query() disponible où vous pouvez écrire à la main écrit des requêtes SQL à exécuter (cela fonctionne aussi dans les voiles <0.10);
OriginalL'auteur veturi