Vấn đề có thể là ở cách bạn thiết lập sự liên kết của mình, vui lòng đề cập đến chiến lược của bạn.
Sau đây là hoạt động tốt nếu bạn sử dụng thiết lập tệp express index.js và sau đó truy vấn http://docs.sequelizejs.com/en/1.7.0/articles/express/
'use strict';
module.exports = function(sequelize, DataTypes) {
var customer = sequelize.define('customer', {
customernumber: DataTypes.STRING(30), //remove
customerspecificationid: DataTypes.INTEGER,
customertypeid: DataTypes.INTEGER,
sportid: DataTypes.INTEGER,
customername: DataTypes.STRING(20), //remove
address: DataTypes.STRING(30),
city: DataTypes.STRING(30),
state: DataTypes.STRING(30),
zipcode: DataTypes.STRING(30),
ordercomplete: DataTypes.BOOLEAN,
isactive: DataTypes.BOOLEAN
}, {
associate: function(models) {
// associations can be defined here
models.customer.hasMany(models.order);
}
});
customer.hook('afterCreate', function(cust, options) {
//generate the customer number
return customer.update({ customernumber: custnumber }, {
where: {
id: cust.id
}
});
});
return customer;
};
'use strict';
module.exports = function(sequelize, DataTypes) {
var order = sequelize.define('order', {
ponumber: DataTypes.STRING(30), //remove
orderdate: DataTypes.DATE,
shippingmethod: DataTypes.STRING(30),
shippingterms: DataTypes.STRING(30),
deliverydate: DataTypes.DATE,
paymentterms: DataTypes.STRING(30),
overridediscount: DataTypes.BOOLEAN,
shippingaddress: DataTypes.STRING(30),
shippingcity: DataTypes.STRING(30),
shippingstate: DataTypes.STRING(20),
shippingzipcode: DataTypes.STRING(10),
isactive: DataTypes.BOOLEAN
}, {
associate: function(models) {
// associations can be defined here
models.order.belongsTo(models.user);
models.order.belongsTo(models.customer);
}
});
order.hook('afterCreate', function(ord, options) {
//generate po number
return order.update({ ponumber: ponumbr }, {
where: {
id: ord.id
}//,
//transaction: options.transaction
});
});
return order;
};
'use strict';
module.exports = function(sequelize, DataTypes) {
var user = sequelize.define('user', {
username: DataTypes.STRING(30), //remove
password: DataTypes.STRING(255),
emailaddress: DataTypes.STRING(255),
firstname: DataTypes.STRING(30),
middlename: DataTypes.STRING(30), //remove
lastname: DataTypes.STRING(30),
approve: DataTypes.BOOLEAN,
roles: DataTypes.STRING(50),
isactive: DataTypes.BOOLEAN
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
models.user.hasMany(models.order);
}
}
});
user.hook('afterCreate', function(usr, options) {
//hash the password
return user.update({ password: passwd }, {
where: {
id: usr.id
}
});
});
return user;
};
// tệp index.js nơi bạn sẽ liên kết các tuyến
var fs = require('fs')
, path = require('path')
, Sequelize = require('sequelize')
, lodash = require('lodash')
, sequelize = new Sequelize('sequelize_test', 'root', 'root')
, db = {}
fs.readdirSync(__dirname)
.filter(function(file) {
return (file.indexOf('.') !== 0) && (file !== 'index.js')
})
.forEach(function(file) {
var model = sequelize.import(path.join(__dirname, file))
db[model.name] = model
})
Object.keys(db).forEach(function(modelName) {
if (db[modelName].options.hasOwnProperty('associate')) {
db[modelName].options.associate(db)
}
})
// sequelize.sync({force: true})
module.exports = lodash.extend({
sequelize: sequelize,
Sequelize: Sequelize
}, db)
Đặt mã db ở trên vào các tệp tương ứng trong thư mục db hoặc bất kỳ thứ gì bạn muốn đặt tên cho nó và sau đó bạn có thể sử dụng truy vấn của mình
var db =request ('./ db');
db.order.find({
where: { id: 0 },
include: [ db.customer, db.user ]
})
.then(function(order){
console.log(order)
})