【问题标题】:What's Wrong With My Sequelize belongsToMany Search?我的 Sequelize belongsToMany 搜索出了什么问题?
【发布时间】:2016-12-22 06:38:04
【问题描述】:

我第一次尝试使用 Sequelize 连接。我似乎完全按照docs 完成了所有操作,但由于某种原因,搜索没有返回我的相关记录。

序列化模型

const apptsModel = db.define('Appts', {
    id: {type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true},
    [.....]});


const UserDataModel = db.define('UserData', {
    [.....]
    userID: {type: Sequelize.STRING},
});

apptsModel.belongsToMany(UserDataModel, {through: 'ApptsToUsers', foreignKey: 'ApptID'});
UserDataModel.belongsToMany(apptsModel, {through: 'ApptsToUsers', foreignKey: 'UserDatumUserID'});

const UserData = db.models.UserData;
const Appts = db.models.Appts;

export {UserData, Appts };

我的 belongsToMany 表记录已成功创建,包括 ApptsToUsers 表中的正确条目。但是当我尝试在给定的 Appt 上进行查找以从 UserData 返回相关记录时,没有相关数据返回。

搜索代码

return Promise.resolve()
     .then(() => {
        var participants = connectors.Appts.findAll({ where: {id: 10}, include: [ connectors.UserData ] });
        return participants;
    })
    .then(participants => {
     //RELATED DATA NOT FOUND
    })
    .catch((err)=>{
        console.log(err);
    });

我错过了什么?

提前感谢大家提供任何信息。

【问题讨论】:

    标签: sequelize.js has-and-belongs-to-many


    【解决方案1】:

    我通过将 UserDataModel.userID 字段重命名为 UserDataModel.id(删除之前的 UserDataModel.id 字段)并更改以下代码以省略 foreignKey 选项来解决此问题:

    apptsModel.belongsToMany(UserDataModel, {through: 'ApptsToUsers'});
    UserDataModel.belongsToMany(apptsModel, {through: 'ApptsToUsers'});
    

    Sequelize 默认期望在这种情况下它正在寻找的字段被命名为“id”。

    【讨论】:

      猜你喜欢
      • 2013-01-23
      • 1970-01-01
      • 2016-02-08
      • 2013-11-16
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多