は、私は、データがユーザーに返さたいいくつかのsensetiveデータが含まれていないので、私はという名前の関数を使用してを選ぶこと toPublicJSONという名前instanceMethodsを追加していますtoPublicJSONは、この私のデータベースconfiguratsequelizeのinstanceMethods
関数ではないこと:underscoreJSが、私はこの機能(toPublicJSON)を使用する場合、私は、エラーが発生したからイオン:
var bcrypt = require("bcrypt");
var _ = require("underscore");
module.exports = function(sequelize, DataType) {
return sequelize.define('users', {
email: {
type: DataType.STRING,
allowNull: false,
unique: true,
validate: {
isEmail: true
}
},
salt: {
type: DataType.STRING
},
hassedPassword: {
type: DataType.STRING
},
password: {
type: DataType.VIRTUAL,
allowNull: false,
validate: {
len: [7, 100]
},
set: function(value) {
var salt = bcrypt.genSaltSync(10);
var hashed_password = bcrypt.hashSync(value, salt);
this.setDataValue('password', value);
this.setDataValue("salt", salt);
this.setDataValue("hassedPassword", hashed_password);
}
}
}, {
hooks: {
beforeValidate: function(user, option) {
if (typeof user.email == 'string')
user.email = user.email.toLowerCase();
}
},
instanceMethods:{
toPublicJSON: function() {
var json = this.toJSON();
return _.pick(json, 'id', 'email', 'createdAt', 'updatedAt');
}
}
});
}
私のコード:
app.post('/users',function(req,res){
var body=_.pick(req.body,"email","password");
db.users.create(body).then(function(user){
return res.send(user.toPublicJSON());
},function(e){
return res.status(400).json(e);
})
});
と、これは誤りである:あなたがSequelizeの最新バージョンを使用していると仮定すると、
を言うことができることをしなかった場合。そうするためにモデルを定義する方法を微調整するだけで済みます。 –
ありがとうございました:) – Zola
ありがとうございました – Zola