self.$expandAttributes 不是 Sequelize 的函数 [英] self.$expandAttributes is not a function with Sequelize
问题描述
我尝试使用 Sequelize 将 master 和 details 对象添加到 MySQL 中,但出现了类似的错误;
i've try to add master and details object to MySQL with Sequelize and i got the error like;
TypeError: self.$expandAttributes 不是函数在conformOptions (/Desktop/git/ss-portal-server/node_modules/sequelize/lib/model.js:243:10)在conformInclude (/Desktop/git/ss-portal-server/node_modules/sequelize/lib/model.js:300:5)
TypeError: self.$expandAttributes is not a function at conformOptions (/Desktop/git/ss-portal-server/node_modules/sequelize/lib/model.js:243:10) at conformInclude (/Desktop/git/ss-portal-server/node_modules/sequelize/lib/model.js:300:5)
参考资料;https://github.com/sequelize/sequelize/blob/master/docs/docs/associations.md
任何人都知道我的错误在哪里.非常感谢
Anyone know where is my error. Many thanks
示例代码;
var contactModel = global.sequelize.define('Contact', {
Email: global.Sequelize.STRING,
FirstName: global.Sequelize.STRING,
LastName: global.Sequelize.STRING,
BirthDate: global.Sequelize.DATE,
PhoneId: global.Sequelize.BIGINT,
AddressId: global.Sequelize.BIGINT,
IsActived: global.Sequelize.BOOLEAN
}, {
tableName: 'CONTACT',
timestamps: false
});
var addressModel = global.sequelize.define('Address', {
CountryId: global.Sequelize.INTEGER,
City: global.Sequelize.STRING,
Line1: global.Sequelize.STRING,
Line2: global.Sequelize.STRING,
PostalCode: global.Sequelize.STRING,
State: global.Sequelize.STRING,
IsActived: global.Sequelize.BOOLEAN
}, {
tableName: 'ADDRESSES',
timestamps: false
});
var Addresses = contactModel.hasMany(addressModel, {as: 'addresses'});
contactModel.create({
Email: "email1.test@gmail.com",
FirstName: "f1",
LastName: "l1",
BirthDate: "1990-01-02",
addresses: [
{
CountryId: 1,
City: "San",
Line1: "Address line 1",
Line2: "Address line 2",
PostalCode: "MKD922M",
State: "ADD",
IsActived: true
},
{
CountryId: 2,
City: "San1",
Line1: "Address line 1",
Line2: "Address line 2",
PostalCode: "M323M",
State: "ADD222",
IsActived: true
}
],
IsActived: true
},{
include: [{ model: Addresses, as: 'addresses'}]
}).then(function(c) {
console.log(c);
callback(null, c);
});
推荐答案
我遇到了同样的问题.我将 include: [{ model: Addresses, as: 'addresses'}]
更改为 include: [{ model: Addresses}]
.看下面的例子
I faced the same issue. I changed include: [{ model: Addresses, as: 'addresses'}]
to include: [{ model: Addresses}]
. Look at the example below
const User = sequelize.define('user', {
username: Sequelize.STRING,
});
const Address = sequelize.define('add', {
address: Sequelize.STRING,
}, {
tableName: 'adds123',
});
const Designation = sequelize.define('designation', {
designation: Sequelize.STRING,
});
User.hasOne(Address);
User.hasMany(Designation);
sequelize.sync({ force: true })
.then(() => User.create({
username: 'test123',
add: {
address: 'this is dummy address'
},
designations: [
{ designation: 'designation1' },
{ designation: 'designation2' },
],
}, { include: [Address, Designation] }))
.then(user => {
User.findAll({
include: [{
model: Address
}, {
model: Designation
}
],
}).then((result) => {
console.log(result);
});
});
这篇关于self.$expandAttributes 不是 Sequelize 的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!