我有2个产品集ProductVariant和Inventory
module.exports = new EntitySchema({
name: 'ProductVariant',
target: ProductVariant,
columns: {
id: {
primary: true,
type: 'varchar',
},
image: {
type: 'json',
nullable: true,
},
productId: {
type: 'varchar',
},
},
relations: {
product: {
target: 'Product',
type: 'many-to-one',
joinColumn: {
name: 'productId',
},
},
inventory: {
target: 'Inventory',
type: 'one-to-one',
inverseSide: 'variantId',
cascade: true,
},
},
});
和库存
const EntitySchema = require('typeorm').EntitySchema;
const Inventory = require('../models/inventory').Inventory;
module.exports = new EntitySchema({
name: 'Inventory',
target: Inventory,
columns: {
id: {
type: 'varchar',
primary: true,
unique: true,
},
sku: {
type: 'varchar',
nullable: true,
},
variantId: {
type: 'varchar',
}
},
relations: {
variant: {
target: 'ProductVariant',
type: 'one-to-one',
cascade: true,
joinColumn: {
name: 'variantId',
},
},
},
});
现在,如果我运行此查询
const products = await ProductRepo.find({ relations: ['collections', 'variants', 'variants.inventory'] });
我收到一个错误,说Cannot read property 'joinColumns' of undefined
在我的数据库中,这些关系是完美建立的。唯一可能出错的地方是,没有从变体到库存的路径,但是有从库存到变体的路径。因此,这不是两方面的事情。一侧只有一对一,但ORM应该足够聪明才能正确选择它? 那是这里唯一的事情。
有人可以告诉我如何解决此问题。
答案 0 :(得分:0)
所以这里的错误很简单。相反,您没有提及列名,而是提及关系。就我而言,如果您看到我提到了variantId,将其替换为variant,请为我修复。