Javascript sequelize模型自定义方法返回未定义
在我的应用程序中,我有一个用户,一些用户是医生,一些是牙医,一些是营养师,当我开始使用时,我想发送一个json,其中包含用户和用户数据,这些数据基于两列用户(model_id和model),我尝试使用名为morpto的自定义方法进行查找,所以我有一个名为users的模型Javascript sequelize模型自定义方法返回未定义,javascript,methods,model,undefined,sequelize.js,Javascript,Methods,Model,Undefined,Sequelize.js,在我的应用程序中,我有一个用户,一些用户是医生,一些是牙医,一些是营养师,当我开始使用时,我想发送一个json,其中包含用户和用户数据,这些数据基于两列用户(model_id和model),我尝试使用名为morpto的自定义方法进行查找,所以我有一个名为users的模型 module.exports = function(sequelize, DataTypes) { var user = sequelize.define('users', { email: {type: Sequeli
module.exports = function(sequelize, DataTypes) {
var user = sequelize.define('users', {
email: {type: Sequelize.STRING, field: 'email'},
password: Sequelize.STRING,
name: Sequelize.STRING,
company_id: Sequelize.INTEGER,
rg: Sequelize.STRING,
cpf: Sequelize.STRING,
birth_date: Sequelize.STRING,
sex: Sequelize.STRING,
address: Sequelize.STRING,
number: Sequelize.STRING,
complement: Sequelize.STRING,
neighborhood: Sequelize.STRING,
city: Sequelize.STRING,
cep: Sequelize.STRING,
uf: Sequelize.STRING,
obs: Sequelize.STRING,
status_id: Sequelize.INTEGER,
model_id: Sequelize.INTEGER,
model: Sequelize.STRING,
deleted_at: Sequelize.STRING,
created_at: Sequelize.STRING,
updated_at: Sequelize.STRING,
}, {timestamps:false, attributes: { exclude : [ 'password' ]},
classMethods: {
associate: function(models) {
user.belongsToMany(models.groups, {
through: {
model: models.user_groups
}, foreignKey:'user_id', as: 'groups'}),
user.belongsToMany(models.permissions, {
through: {
model: models.user_permissions
}, foreignKey:'user_id', as: 'permissions'})
},
morphTo: function(models, model_id, model){
if(model == 'medics'){
models.medics.findById(model_id).then(function(results) {
return results;
});
}else if(model == 'employees'){
models.employees.findById(model_id).then(function(results) {
return results;
});
}
}
}});
return user;
}
根据我的资源,我有这个
models.users.findById(req.params.id).then(function(results) {
if(results)
console.log(models.users.morphTo(models, results.dataValues.model_id, results.dataValues.model));
else
res.status(204).send();
});
我的控制台正在运行查询,但返回“未定义”
我忘了什么?我想你的承诺有问题:
console.log(models.users.morphTo(models, results.dataValues.model_id, results.dataValues.model));
这是一个异步调用。你不应该期待马上得到答案,你应该期待一个承诺
试试这个:
models.users.findById(req.params.id).then(function(results) {
if(results) {
models.users.morphTo(models, results.dataValues.model_id, results.dataValues.model).then(function(result) {
console.log('This is your result:', result);
});
} else {
res.status(204).send();
}
});
您可以简化模型声明:
morphTo: function(models, model_id, model){
if(model == 'medics'){
return models.medics.findById(model_id);
}else if(model == 'employees'){
return models.employees.findById(model_id);
}
}
我认为你的承诺有问题:
console.log(models.users.morphTo(models, results.dataValues.model_id, results.dataValues.model));
这是一个异步调用。你不应该期待马上得到答案,你应该期待一个承诺
试试这个:
models.users.findById(req.params.id).then(function(results) {
if(results) {
models.users.morphTo(models, results.dataValues.model_id, results.dataValues.model).then(function(result) {
console.log('This is your result:', result);
});
} else {
res.status(204).send();
}
});
您可以简化模型声明:
morphTo: function(models, model_id, model){
if(model == 'medics'){
return models.medics.findById(model_id);
}else if(model == 'employees'){
return models.employees.findById(model_id);
}
}