模型实例在 Sequelize JS 中的原始查询选择数据不起作用

问题描述 投票:0回答:1

我使用带有原始查询和引用的sequelizeJs

Users
实例,但返回数据显示所有字段

    // require Squelize
    const { Sequelize } = require('sequelize'); // i used v6.21.3

    // database connection
    const sequelize = new Sequelize('my_db', 'my_user', 'my_pass', {
      host: 'localhost',
      dialect: 'mysql'
    });
    
    // Declare Users Instances
    const Users = sequelize.define("users", {
      id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true,
      },
      username: DataTypes.STRING,
      name: DataTypes.STRING,
      email: DataTypes.STRING,
    });

    // Query Get users data
    async function getUsers() {
        let results = await sql.mysql_first_db.query("select * from users", {
            model: Users, // use Users instance
            mapToModel: true, // use true for mapped fields
        });

        // log results
        await console.log(results);
    }

    // call function getUsers
    getUsers();

    // results
    [
      {
        id: 1,
        username: 'ibomb',
        password: '2895f6eb811d9ba6c08e6565a7',
        name: 'bombkiml',
        email: '[email protected]',
        family_name: 'ibomb',
        middle_name: 'kiml',
        given_name: 'kiml',
        isActived: '1',
        isDeleted: '0',
        createdAt: 2024-03-05T06:07:51.000Z,
        updatedAt: null
      }
    ]

响应结果为

Raw Query
,而不是参考
Users
实例。 所以,我想要这样的结果。

   // Results
   [
      {
        id: 1,
        username: 'ibomb',
        name: 'bombkiml',
        email: '[email protected]',
      }
    ]

请告诉我发生了什么?

感谢您提供解决方案

node.js sequelize.js
1个回答
0
投票

指定您想要的属性,如下所示:

 Model.findAll({
   attributes: ['id', 'username', 'name', 'email']
 });
© www.soinside.com 2019 - 2024. All rights reserved.