繁体   English   中英

如何在Sequelize查询上合并包含的模型属性

[英]How to merge Included Model Attributes on Sequelize Query

有谁知道如何在Sequelize中执行查询(在该数据库中(无SQL双关语))将包含的模型属性合并到父模型中? 用户模型,user_profile模型和查询如下。 我想返回一个具有以下属性的对象:['id','username','role','is_active','email','first_name','last_name']。 谢谢!

  export default function (sequelize, DataTypes) { var User = sequelize.define( 'User', { username: { type: DataTypes.STRING, unique: true }, email: { type: DataTypes.STRING, unique: true }, password_hash: { type: DataTypes.STRING }, role: { type: DataTypes.STRING, defaultValue: 'user' }, is_active: { type: DataTypes.BOOLEAN, defaultValue: true } }, { timestamps: true, freezeTableName: true } ); User.associate = function (models) { models.User.hasOne(models.UserProfile, { foreignKey: 'user_id' }); }; return User; } 'use strict'; export default function (sequelize, DataTypes) { var UserProfile = sequelize.define( 'UserProfile', { first_name: DataTypes.STRING, last_name: DataTypes.STRING }, { timestamps: true, freezeTableName: true } ); UserProfile.associate = function () { // associations can be defined here }; return UserProfile; } async getUserByUsername(username) { return await db.User.findOne({ attributes: [ 'id', 'username', 'role', 'is_active', 'email', ['userProfile.first_name', 'first_name'], ['userProfile.last_name', 'last_name'] ], include: [{ model: db.UserProfile, as: 'userProfile', required: true }], where: { username } }) } 

两种模型都需要在同一序列对象中定义。

const User = sequelize.define(
    'User',
    {
        username: { type: DataTypes.STRING, unique: true },
        email: { type: DataTypes.STRING, unique: true },
        password_hash: { type: DataTypes.STRING },
        role: { type: DataTypes.STRING, defaultValue: 'user' },
        is_active: { type: DataTypes.BOOLEAN, defaultValue: true }
    },
    { timestamps: true, freezeTableName: true }
);
const UserProfile = sequelize.define(
    'UserProfile',
    {
        first_name: DataTypes.STRING,
        last_name: DataTypes.STRING
    },
    { timestamps: true, freezeTableName: true }
);

user.hasOne(user_profile, {foreignKey: 'user_id'})

查询数据,例如:

sequelize.models.user.findAll({
    include: [
        {
            model: sequelize.models.user_profile,
        }
    ]
}).then((user) => {
    console.log(user);
}).catch((err) => {
    console.log(err);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM