簡體   English   中英

SequelizeDatabaseError:Koa.js 框架中不存在關系“用戶”

[英]SequelizeDatabaseError: relation "users" does not exist in Koa.js framework

我有兩個模型 user 和 acessToken ,我正在嘗試建立這兩個表之間的關系,但出現錯誤。

模型如下:-

  1. 用戶模型:-

 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; };

  1. 訪問令牌模型:-

 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)

誰能告訴我哪里做錯了我無法識別錯誤。

嘗試在用戶模型中有鈎子的地方添加它...

freezeTableName: true,
tableName: 'user',

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM