Sequelize多对多模型建好后怎么查询?

user表:

module.exports = function(sequelize, DataTypes) {
    return sequelize.define('user', {
        id: {
            type: DataTypes.INTEGER(12),
            allowNull: false,
            primaryKey: true,
            autoIncrement: true,
            unique : true
        },
        username: {
            type: DataTypes.STRING,
            allowNull: true
        }
    }, {
        timestamps: true,
        underscored: true,
        tableName: 'user',
        freezeTableName: true,
        paranoid: true
    });
};

bbs表:

module.exports = function(sequelize, DataTypes) {
    return sequelize.define('bbs', {
        id: {
            type: DataTypes.INTEGER(12),
            allowNull: false,
            primaryKey: true,
            autoIncrement: true,
            unique : true
        },
        name: {
            type: DataTypes.STRING,
            allowNull: true
        }
    }, {
        timestamps: true,
        underscored: true,
        tableName: 'bbs',
        timestamps: false,
        freezeTableName: true,
        paranoid: true
    });
};

建立关系:

db.user.belongsToMany(db.bbs, {through: 'userbbs', as:'userbbs'});
db.bbs.belongsToMany(db.user, {through: 'userbbs', as:'userbbs'});

生成表bbs,user,userbbs

userbbs结构:

userid,bbsid,update_at,create_at

执行以下语句成功,三表都插入相应数据:

Promise.all([
     db.user.create({username:'itbilu'}),
     db.bbs.create({name:'越秀'})
])
     .then(function(results){
            var user = results[0];
            var bbs= results[1];
            user.setUserBbs(bbs);
            res.json(results);
     })

但是到了查询,我想查询所有用户的信息和所在社区信息时就不知道怎么取了,看了网上多种方案都不行:

第一

db.user.findAll().then(function(user){
    user.getBbs();
    res.json(user);
})

user.getBbs is not a function。
然后试了user.getUserBbs();也不行

第二种,看的官方文档:

db.user.findAll({include:[{model:db.bbs]}).then(function(user){
    res.json(user);
})

报: bbs is not associated to user!

求到底应该怎么查啊?哭死

阅读 5.4k
3 个回答

解决了,自己的问题

新手上路,请多包涵

我也遇到这种问题,直接提示:user is not associated to address!

新手上路,请多包涵

试下user.getUserbbs

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题