self.$expandAttributes 不是 Sequelize 的函数 [英] self.$expandAttributes is not a function with Sequelize

查看:49
本文介绍了self.$expandAttributes 不是 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆