Sequelize.js Sequelize-查询对象及其子对象
我正在尝试查询一个模型及其子对象。子级使用“属于”引用父级。我正试图找到一位家长,并将孩子包括在结果中 以下是我的用户模型:Sequelize.js Sequelize-查询对象及其子对象,sequelize.js,Sequelize.js,我正在尝试查询一个模型及其子对象。子级使用“属于”引用父级。我正试图找到一位家长,并将孩子包括在结果中 以下是我的用户模型: const Sequelize = require('sequelize'); const connection = require('../middleware/sql-connection'); const User = connection.define('USR', { 'ID': { type: Sequelize.BIGINT, primaryKey
const Sequelize = require('sequelize');
const connection = require('../middleware/sql-connection');
const User = connection.define('USR', {
'ID': { type: Sequelize.BIGINT, primaryKey: true },
'NM': { type: Sequelize.STRING, allowNull: false },
'EMAIL': { type: Sequelize.STRING, allowNull: false, validate: { isEmail: true } },
'PHONE': { type: Sequelize.STRING, allowNull: false },
'STS': { type: Sequelize.BOOLEAN, allowNull: false }
});
module.exports = User;
以下是我的用户\u TC型号:
const Sequelize = require('sequelize');
const connection = require('../middleware/sql-connection');
const User = require('./user');
const UserTC = connection.define('USR_TC', {
'USR_ID': { type: Sequelize.BIGINT, primaryKey: true },
'TC_ACPT': { type: Sequelize.BOOLEAN, allowNull: false }
});
UserTC.belongsTo(User, { as: 'User', foreignKey: 'USR_ID' });
module.exports = UserTC;
const Sequelize = require('sequelize');
const connection = require('../middleware/sql-connection');
const UserTC = connection.define('USR_TC', {
'USR_ID': { type: Sequelize.BIGINT, primaryKey: true, references: 'USR', referencesKey: 'ID' },
'TC_ACPT': { type: Sequelize.BOOLEAN, allowNull: false }
});
module.exports = UserTC;
下面是我的findOne方法:
User.findOne({
include: [
{ model: UserTC, as: 'userTc' }
],
where: { ID: req.userData.id }
})
.then(user => {
return res.status(200).json(user);
})
.catch(err => {
console.log(err);
return res.status(500).json({
message: err
});
});
User.findOne({
include: [
{ model: UserTC, as: 'userTc' }
],
where: { ID: req.userData.id }
})
.then(user => {
return res.status(200).json(user);
})
.catch(err => {
console.log(err);
return res.status(500).json({
message: err
});
});
输出向我抛出一个错误:SequelizeAgerLoadingError:USR_TC与USR不关联代码>
请指教 你需要
User.hasMany(user_tc)||User.hasOne(User_tc)
为了能够从用户处查询usr\U tc,我找到了实现方法。以下是我所做的:
在我的用户模型中:
const Sequelize = require('sequelize');
const connection = require('../middleware/sql-connection');
const UserTC = require('./user-tc');
const User = connection.define('USR', {
'ID': { type: Sequelize.BIGINT, primaryKey: true },
'NM': { type: Sequelize.STRING, allowNull: false },
'EMAIL': { type: Sequelize.STRING, allowNull: false, validate: { isEmail: true } },
'PHONE': { type: Sequelize.STRING, allowNull: false },
'STS': { type: Sequelize.BOOLEAN, allowNull: false }
});
User.hasOne(UserTC, { as: 'userTc', foreignKey: 'USR_ID' });
module.exports = User;
在my User_TC模型中:
const Sequelize = require('sequelize');
const connection = require('../middleware/sql-connection');
const User = require('./user');
const UserTC = connection.define('USR_TC', {
'USR_ID': { type: Sequelize.BIGINT, primaryKey: true },
'TC_ACPT': { type: Sequelize.BOOLEAN, allowNull: false }
});
UserTC.belongsTo(User, { as: 'User', foreignKey: 'USR_ID' });
module.exports = UserTC;
const Sequelize = require('sequelize');
const connection = require('../middleware/sql-connection');
const UserTC = connection.define('USR_TC', {
'USR_ID': { type: Sequelize.BIGINT, primaryKey: true, references: 'USR', referencesKey: 'ID' },
'TC_ACPT': { type: Sequelize.BOOLEAN, allowNull: false }
});
module.exports = UserTC;
以及以下findOne方法:
User.findOne({
include: [
{ model: UserTC, as: 'userTc' }
],
where: { ID: req.userData.id }
})
.then(user => {
return res.status(200).json(user);
})
.catch(err => {
console.log(err);
return res.status(500).json({
message: err
});
});
User.findOne({
include: [
{ model: UserTC, as: 'userTc' }
],
where: { ID: req.userData.id }
})
.then(user => {
return res.status(200).json(user);
})
.catch(err => {
console.log(err);
return res.status(500).json({
message: err
});
});
工作起来很有魅力:):)下面是我的输出:
{
"ID": "1",
"NM": "Tenant-1",
"EMAIL": "tenant1@gmail.com",
"PHONE": "1234567890",
"STS": true,
"userTc": {
"USR_ID": "1",
"TC_ACCPT": false
}
}