【问题标题】:Sequelize association exists in pgAdmin but it keeps looking for unknown column during queriespgAdmin 中存在 Sequelize 关联,但它在查询期间一直在寻找未知列
【发布时间】:2019-08-25 05:02:44
【问题描述】:

一段时间以来,我一直在努力让我的关联正常工作。我有一个拍卖模型和一个投标模型,拍卖模型有很多投标。 Auctions 上的外键“BidId”与 Bids 上的“bid_id”相关联。

Auction.js

const Sequelize = require('sequelize');
const sequelize = require('../config/database');

const User = require('./User');
const Status = require('./Status');
const Vehicle = require('./Vehicles')
const Bids = require('./Bids');
const tableName = 'Auctions';
const Auction = sequelize.define('Auctions', {
  auc_id: {
    type: Sequelize.UUID,
    defaultValue: Sequelize.UUIDV4, // generate the UUID automatically
    primaryKey: true,
  },
  features: {
    type: Sequelize.JSONB,
  },
  bid_amount: {
    type:Sequelize.STRING
  },
  BidId: {
    type: Sequelize.INTEGER
  }
});

module.exports = Auction

Bids.js

const Sequelize = require('sequelize');


// const resolver = require('graphql-sequelize');
const sequelize = require('../config/database');
const Auction = require('./Auction');

const tableName = 'bids';
const Bids = sequelize.define('Bids', {
  bid_id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  createdAt: {
   type: Sequelize.DATE,
   // defaultValue: Sequelize.NOW
  },
  updatedAt: {
    type: Sequelize.DATE,
    defaultValue: Sequelize.NOW,
  },
  amount: {
    type: Sequelize.INTEGER
  },
  bid_amount: {
    type:Sequelize.STRING
  },
  bid_no: {
    type: Sequelize.UUID,
    defaultValue: Sequelize.UUIDV4,
  },
}, 
{tableName})


Bids.hasOne(Auction, {foreignKey: 'BidId'}) // Bids is the source, Auction is the target
Auction.hasMany(Bids);
module.exports = Bids

当我使用以下查询时: const findBidOnAuction = () => {Auction.findAll( {where:{BidId:1},include:[{model:Bids}]}).then(data => console.log("result", data))} 我收到错误:Unhandled rejection SequelizeDatabaseError: column GSMBids.GSMAuctionAucId does not exist

我不知道 GSMBids.GSMAuctionAucId 应该来自哪里,我假设 Sequelize 在使用关联时默认需要一个具有该名称的列,但这没有意义,因为我定义了专门链接的列。看起来它正在尝试链接auc_id,但我不希望那样。

编辑:如果我切换查询并执行此操作: const findBidOnAuction = () => {Bids.findAll( {where:{bid_id:1},include:[{model:Auction}]}).then(data => console.log("result", data))}

我收到Unhandled rejection SequelizeEagerLoadingError: GSMAuction is not associated to GSMBids!

【问题讨论】:

    标签: node.js sequelize.js pgadmin


    【解决方案1】:

    我怀疑 Sequelize 不知道拍卖中的哪个字段与出价相关联。你可以试试:

    Auction.hasMany(Bids,
             {
             sourceKey : "BidId",  // auction
             foreignKey: "bid_id"  // bids
             });
    

    即使错误不再出现,检查生成的 SQL 并确保连接正确!

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2020-06-25
      • 2016-12-19
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多