书架关联错误

dzhpxtsq  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(426)

我正在尝试创建关联并使用这些关联创建查询,但一直收到以下错误:
堆栈跟踪
这是我的模型和查询文件(测试.js)

  1. import knex from 'knex';
  2. import {
  3. client,
  4. host,
  5. user,
  6. password,
  7. database,
  8. charset
  9. } from './environment/dev';
  10. import bookshelf from 'bookshelf';
  11. const Knex = knex({
  12. client: client,
  13. connection: {
  14. host: host,
  15. user: user,
  16. password: password,
  17. database: database,
  18. charset: charset
  19. }
  20. });
  21. const Bookshelf = bookshelf(Knex);
  22. Bookshelf.plugin('registry');
  23. const AccessGroup = Bookshelf.Model.extend({
  24. tableName: 'AccessGroup',
  25. idAttribute: 'idAccessGroup',
  26. users: () => {
  27. return this.hasMany('User');
  28. }
  29. });
  30. const User = Bookshelf.Model.extend({
  31. tableName: 'User',
  32. idAttribute: 'idUser',
  33. accessGroup: () => {
  34. return this.belongsTo('AccessGroup', 'idAccessGroup');
  35. }
  36. });
  37. const checkUserExist = (userName) => {
  38. // return new User({
  39. // userName
  40. // }).fetch({withRelated:['accessGroup']});
  41. return User.forge({userName}).fetch({withRelated: ['accessGroup']});
  42. // return User.fetchAll({withRelated: ['accessGroup']});
  43. // return new User({userName}).accessGroup();
  44. }
  45. export { checkUserExist };

基本上我对使用这些关联有问题。我能够在我的模型上运行基本查询,并从数据库中接收准确的数据。我所有的id属性和表名都是正确的。我在网上查了很多,但找不到任何有用的东西。
当我执行基本查询时,

  1. new User({
  2. userName: 'admin8791'
  3. }).fetch().then(d => {
  4. console.log(d);
  5. });

结果表明两者之间没有关系。

  1. ModelBase {
  2. attributes:
  3. { userName: 'admin8791',
  4. idUser: 8791,
  5. firstName: 'Jerrell',
  6. lastName: 'Jones',
  7. idAccessGroup: 1 },
  8. _previousAttributes:
  9. { userName: 'admin8791',
  10. idUser: 8791,
  11. firstName: 'Jerrell',
  12. lastName: 'Jones',
  13. idAccessGroup: 1 },
  14. changed: {},
  15. relations: {},
  16. cid: 'c1',
  17. _knex: null }
dwthyt8l

dwthyt8l1#

必须立即加载关联:

  1. new User({
  2. userName: 'admin8791'
  3. }).fetch({withRelated: 'accessGroup'}).then(d => {
  4. console.log(d);
  5. });

相关问题