使用Sequelize Create方法时如何仅返回特定属性

问题描述 投票:2回答:3

我一直在搜索Sequelize文档和论坛以获取正确的语法,似乎我正在以正确的方式进行,但由于某种原因,密码字段仍在响应有效负载中返回...

以下链接显示了我正在使用的属性排除语法在Sequelize的版本3.11中添加:https://github.com/sequelize/sequelize/issues/4074

谁知道我在这里可能会缺少什么?下面是Create方法和Insert语句中的控制台日志。

Create方法

async create(req, res) {
try {
    let user = await User.create({
        firstName: req.body.firstName,
        lastName: req.body.lastName,
        email: req.body.email,
        password: req.body.password
    }, {
        attributes: {
            exclude: ['password']
        }
    });

    console.log("USER: ", user);

    res.status(201).send(user.toJSON());
}
catch (error) {
    res.status(500).send(error)
};

}

控制台日志

执行(默认):INSERT INTO“Users”(“id”,“firstName”,“lastName”,“email”,“password”,“createdAt”,“updatedAt”)VALUES(DEFAULT,'James','Martineau' ,'test @ gmail.com','$ 2b $ 10 $ 7ANyHzs74OXYfXHuhalQ3ewaS4DDem1cHMprKaIa7gO434rlVLKp2','2019-02-28 15:18:15.856 +00:00','2019-02-28 15:18:15.856 +00:00' )退货*;

USER:User {dataValues:{id:6,firstName:'James',lastName:'Martineau',email:'[email protected]',密码:'$ 2b $ 10 $ 7ANyHzs74OXYfXHuhalQ3ewaS4DDem1cHMprKaIa7gO434rlVLKp2',更新时间:2019-02-28T15 :18:15.856Z,创作时间:2019-02-28T15:18:15.856Z} ...

javascript sequelize.js sequelize-cli
3个回答
1
投票

我在document中看到,在创建模型时不能排除属性。仅在找到模型时排除。

我建议:

async create(req, res) 
{
try {
    let user = await User.create({
        firstName: req.body.firstName,
        lastName: req.body.lastName,
        email: req.body.email,
        password: req.body.password
    });
    delete user["password"];//delete field password
    console.log("USER: ", user);

    res.status(201).send(user.toJSON());
}
catch (error) {
    res.status(500).send(error)
};
}

1
投票

通过快速阅读文档,似乎attributes仅在以下查询中提及:

Model.findAll({
  attributes: { exclude: ['baz'] }
});

(Qazxswpoi)

如果你想用http://docs.sequelizejs.com/manual/tutorial/querying.html#attributes排除password,你可以这样做:

create

(Qazxswpoi)


0
投票

let user = await User.create({
    firstName: req.body.firstName,
    lastName: req.body.lastName,
    email: req.body.email,
    password: req.body.password
}, {
    fields: ['firstName', 'lastName', 'email']
});
© www.soinside.com 2019 - 2024. All rights reserved.