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
    }
}