У меня есть две модели user и acessToken, и я пытаюсь построить взаимосвязь между этими двумя таблицами, но я получаю сообщение об ошибке.
Модели приведены ниже: -
- Модель пользователя: -
const { hashPassword } = require('../utils');
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('user', {
username: {
type: DataTypes.STRING,
allowNull: false,
primaryKey: true
},
email: {
type: DataTypes.STRING,
allowNull: false,
validate: {
isEmail: true
}
},
password: {
type: DataTypes.STRING,
allowNull: false
},
role: {
type: DataTypes.ENUM,
values: ['admin', 'user'],
allowNull: false,
defaultValue: 'user'
}
},
{
hooks: {
beforeCreate: user =>
hashPassword(user).then(hash => {
user.password = hash; // eslint-disable-line no-param-reassign
})
}
});
User.associate = models => {
models.user.hasMany(models.accessToken);
};
return User;
};
accessToken Модель: -
const crypto = require('crypto');
module.exports = (sequelize, DataTypes) => {
const AccessToken = sequelize.define('accessToken', {
username: {
type: DataTypes.STRING,
allowNull: true
},
token: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: function defaultValue() {
return crypto
.randomBytes(48)
.toString('base64')
.replace(/\//g, '_')
.replace(/\+/g, '-');
}
}
});
AccessToken.associate = models => {
console.log('models =>', models);
models.accessToken.belongsTo(models.user);
};
return AccessToken;
};
Я пытаюсь вставить данные в эти две модели, как показано ниже: -
try {
userData = await models.user.create({ username, email, password });
} catch (e) {
return ctx.throw(500, `creating user failed! :( ${e}`, e);
}
try {
tokenData = await models.accessToken.create({ username });
} catch (e) {
return ctx.throw(500, `creating accessToken failed! :( ${e}`);
}
, поэтому я получаю следующее сообщение об ошибке: -
Executing (default): INSERT INTO "users" ("username","email","password","role","createdAt","updatedAt") VALUES ($1,$2,$3,$4,$5,$6) RETURNING *;
SequelizeDatabaseError: relation "users" does not exist
at Query.formatError (D:\Gaurav's-Stuff\authentication-service\node_modules\sequelize\lib\dialects\postgres\query.js:366:16)
at query.catch.err (D:\Gaurav's-Stuff\authentication-service\node_modules\sequelize\lib\dialects\postgres\query.js:72:18)
at tryCatcher (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\promise.js:547:31)
at Promise._settlePromise (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\promise.js:604:18)
at Promise._settlePromise0 (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\promise.js:649:10) at Promise._settlePromises (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\promise.js:725:18) at _drainQueueStep (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\async.js:93:12)
at _drainQueue (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\async.js:86:9)
at Async._drainQueues (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (D:\Gaurav's-Stuff\authentication-service\node_modules\bluebird\js\release\async.js:15:14)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
Может кто-нибудь сказать мне, где я делаю неправильно, я не могу определить ошибка.