我的 Sequelize belongsToMany 搜索出了什么问题?
What's Wrong With My Sequelize belongsToMany Search?
我是第一次尝试使用 Sequelize 连接。我似乎完全按照 docs 完成了所有操作,但出于某种原因,我的相关记录未被搜索 return。
后续模型
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 table 记录已成功创建,包括 ApptsToUsers table 中的正确条目。但是当我尝试在给定的 Appt 上查找 return 来自 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);
});
我错过了什么?
提前感谢大家提供的任何信息。
我通过将 UserDataModel.userID 字段重命名为 UserDataModel.id(删除之前的 UserDataModel.id 字段)并更改以下代码以省略 foreignKey
选项来解决此问题:
apptsModel.belongsToMany(UserDataModel, {through: 'ApptsToUsers'});
UserDataModel.belongsToMany(apptsModel, {through: 'ApptsToUsers'});
Sequelize 默认期望它在这种情况下查找的字段被命名为 'id'。
我是第一次尝试使用 Sequelize 连接。我似乎完全按照 docs 完成了所有操作,但出于某种原因,我的相关记录未被搜索 return。
后续模型
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 table 记录已成功创建,包括 ApptsToUsers table 中的正确条目。但是当我尝试在给定的 Appt 上查找 return 来自 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);
});
我错过了什么?
提前感谢大家提供的任何信息。
我通过将 UserDataModel.userID 字段重命名为 UserDataModel.id(删除之前的 UserDataModel.id 字段)并更改以下代码以省略 foreignKey
选项来解决此问题:
apptsModel.belongsToMany(UserDataModel, {through: 'ApptsToUsers'});
UserDataModel.belongsToMany(apptsModel, {through: 'ApptsToUsers'});
Sequelize 默认期望它在这种情况下查找的字段被命名为 'id'。