实例方法在Sequelize

时间:2018-03-27 11:39:17

标签: node.js postgresql sequelize.js

我似乎无法正确设置用户模型。我已经实现了一些似乎不起作用的实例方法

var UserDetails = mysequelize.sequelize.define('user_tb', {
id: {
    autoIncrement: true,
    type: mysequelize.sequelize.Sequelize.INTEGER,
    allowNull: false,

},
username: {
    type: mysequelize.sequelize.Sequelize.STRING,
    primaryKey: true,
    unique: true,
},
hierarchyid: {
    type: mysequelize.sequelize.Sequelize.STRING
},
password: {
    type: mysequelize.sequelize.Sequelize.STRING,
     validate: {
        len: {
            args: [6, 15],
            msg: "Please enter a password with at least 6 chars but no more than 15"
        }
    }, 
    allowNull: false
},
customerid: {
    type: mysequelize.sequelize.Sequelize.INTEGER
},
statususer: {
    type: mysequelize.sequelize.Sequelize.STRING,
    allowNull: false
},
userid: {
    unique: true,
    type: mysequelize.sequelize.Sequelize.STRING,
    allowNull: false

},
authtoken: {
    unique: true,
    type: mysequelize.sequelize.Sequelize.STRING,
    allowNull: false

}
},
{
tableName: 'user_tb',
timestamps: false,
freezeTableName: true
});

UserDetails.prototype.toJSON = function(){
var user = this;
var userObject = user.toObject(); 
return _.pick(userObject,['userid','password']);
};



 UserDetails.prototype.findByCredentials = function(userid, password)
{
console.log('Sunddep');

var User = this;
// return User.fin
User.findOne({userid}).then((user)=> {
    if(!user)
    {
        return Promise.reject();
    }
    return new Promise((resolve,reject) => {
        bcrypt.compare(password,user.password,(err,res) => {
            if(res)
            {
                resolve(user);
            }
            else{
                reject();
            }
        })
    })
});
}

 UserDetails.prototype.generateAuthToken = function()
 {
var user = this;
var access = 'authtoken';
var token = jwt.sign({userid: 
user.userid.toHexString(),access},process.env.JWT_SECRET).toString();
user.build({
    access: token
});
user.save().then(() =>{
    return token;
});
}

module.exports = {UserDetails}

server.js

app.post('/user/login', (req, res) => {
console.log(req.body);
var body = _.pick(req.body, ['userId', 'password']);

user.findByCredentials(body.userId, body.password).then(() => {
        res.send('Sundeep');


    },
    (e) => {
        sendData: ({
            wsState: '0',
            messageCode: 'WS000001',
            message: 'No user find with this Id',
            userData: []
        });
        res.status(400).send(sendData)
    });

});

嗨,我从其他类调用实例方法时遇到错误。任何人都可以告诉我如何实现它 UserDetails.prototype.findByCredentials = function(userid,password){.....}

但是在运行server.js文件时,我收到类似UserDetails.findByCredentials的错误,而不是从其他类调用的函数

提前感谢您的帮助。

0 个答案:

没有答案