您好,我正在尝试应用我在关系文档n中找到的内容:n
我有一个模型(用户)
const { Model, DataTypes } = require ('sequelize');
const sequelize = require('../database/index');
const bcrypt = require('bcrypt');
class User extends Model {
static init(sequelize){
super.init({
name: DataTypes.STRING,
email: DataTypes.STRING,
login: DataTypes.STRING,
password: DataTypes.STRING,
}, {sequelize, modelName: 'users'});
}
static associate(models){
this.belongsToMany(models.Match, { foreignKey:'user_id', through:'users_matchs', as:'matchs'});
}
}
User.existLogin = (login) => {
return User.findOne({where:{login: login}});
};
User.isPassword = (encodedPassword, password) => {
return bcrypt.compareSync(password, encodedPassword);
};
module.exports = User;
我的其他型号(匹配)
const { Model, DataTypes } = require ('sequelize');
const sequelize = require('../database/index');
class Match extends Model {
static init(sequelize){
super.init({
name:DataTypes.STRING,
date_start: DataTypes.DATE,
date_finish: DataTypes.DATE,
}, { sequelize, tableName: 'matchs' });
}
static associate(models){
this.belongsToMany(models.User, { foreignKey:'match_id', through:'users_matchs', as:'users'});
}
}
module.exports = Match;
然后在我的控制器中尝试添加辅助表 匹配项和用户
async testando(req,res){
const { user_id } = req.params;
const{name, date_start, date_finish} = req.body;
const user = await User.findByPk(user_id);
if(!user){
return res.status(400).json({error: 'User not Found'});
}
const [ match, created ] = await Match.findOrCreate({
where: { name }
});
console.log('estou aq');
console.log(match);
await user.addMatch(match).catch(error => console.error(error));
return res.json(match);
}
但是我有这个错误:
(节点:2440)UnhandledPromiseRejectionWarning:TypeError:match.addUser 不是功能 在testando(C:\ Users \ SpiriT \ Documents \ ApiGame \ src \ controllers \ MatchController.js:34:21) (节点:2440)UnhandledPromiseRejectionWarning:未处理的Promise 拒绝。该错误是由抛出异步内部引起的 没有捕获块或拒绝承诺 未使用.catch()处理。 (拒绝ID:1)(节点:2440)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。在 未来的人
答案 0 :(得分:0)
Express不支持promise,所有拒绝都应手动处理。
尝试以下代码:
try {
let Useradd= await user.addMatch(match)
Useradd= Useradd.data
return res.json(Useradd)
} catch (err) {
next(err);
}