Ich versuche, 3 Tabellen zusammen Products
, Suppliers
und Categories
und dann Zeile mit SupplierID = 13
zu bekommen. Ich habe How to implement many to many association in sequelize gelesen, dort wird erklärt, wie man 0:M
assoziiert.Sequelize Verbände - bitte verwenden Sie Versprechen-Stil stattdessen
DB Modell:
Code:
var Sequelize = require('sequelize')
var sequelize = new Sequelize('northwind', 'nodejs', 'nodejs', {dialect: 'mysql',})
var Project = require('sequelize-import')(__dirname + '/models', sequelize, { exclude: ['index.js'] });
Project.Suppliers.hasMany(Project.Products, {foreignKey: 'SupplierID'});
Project.Products.belongsTo(Project.Suppliers, {foreignKey: 'SupplierID'});
Project.Categories.hasMany(Project.Products, {foreignKey: 'CategoryID'});
Project.Products.belongsTo(Project.Categories, {foreignKey: 'CategoryID'});
Project.Products
.find({
where: {
SupplierID: 13
},
include: [
Project.Suppliers,
Project.Category,
]
})
.success(function(qr){
if (qr == null) throw "Err";
console.log("---");
console.log(qr);
})
.error(function(err){
console.log("Err");
});
Log:
EventEmitter#success|ok is deprecated, please use promise-style instead.
EventEmitter#failure|fail|error is deprecated, please use promise-style instead.
Err
Eigentlich wäre 'endlich' ein besserer Ersatz für' done', da es unabhängig vom Erfolg aufgerufen wird oder nicht. Aber es hat keinen Zugriff weder auf Fehler noch das Ergebnis –
Danke :) funktioniert wie es sollte! –
Das sieht cool aus, aber ich benutze Eclipse (nodelipse) und es zeigt mir Kompilierungsfehler bei der Verwendung von .Catch (Der Fehler sagt: "Syntaxfehler auf Token" catch ", Identifier erwartet"). Wie vermeide ich diesen Fehler? –