fix(database): cannot read properties of undefined (reading 'findField')
This commit is contained in:
parent
a8cabbab56
commit
71120ab3c4
@ -1,8 +1,8 @@
|
|||||||
import { omit } from 'lodash';
|
import { omit } from 'lodash';
|
||||||
import { BelongsToOptions as SequelizeBelongsToOptions, Utils } from 'sequelize';
|
import { BelongsToOptions as SequelizeBelongsToOptions, Utils } from 'sequelize';
|
||||||
|
import { Reference } from '../features/ReferencesMap';
|
||||||
import { checkIdentifier } from '../utils';
|
import { checkIdentifier } from '../utils';
|
||||||
import { BaseRelationFieldOptions, RelationField } from './relation-field';
|
import { BaseRelationFieldOptions, RelationField } from './relation-field';
|
||||||
import { Reference } from '../features/ReferencesMap';
|
|
||||||
|
|
||||||
export class BelongsToField extends RelationField {
|
export class BelongsToField extends RelationField {
|
||||||
static type = 'belongsTo';
|
static type = 'belongsTo';
|
||||||
@ -84,9 +84,9 @@ export class BelongsToField extends RelationField {
|
|||||||
const foreignKey = this.options.foreignKey;
|
const foreignKey = this.options.foreignKey;
|
||||||
const field1 = collection.getField(foreignKey);
|
const field1 = collection.getField(foreignKey);
|
||||||
|
|
||||||
const field2 = tcoll.findField((field) => {
|
const field2 = tcoll ? tcoll.findField((field) => {
|
||||||
return field.type === 'hasMany' && field.foreignKey === foreignKey;
|
return field.type === 'hasMany' && field.foreignKey === foreignKey;
|
||||||
});
|
}) : null;
|
||||||
|
|
||||||
if (!field1 && !field2) {
|
if (!field1 && !field2) {
|
||||||
collection.model.removeAttribute(foreignKey);
|
collection.model.removeAttribute(foreignKey);
|
||||||
|
@ -5,12 +5,12 @@ import {
|
|||||||
ForeignKeyOptions,
|
ForeignKeyOptions,
|
||||||
HasManyOptions,
|
HasManyOptions,
|
||||||
HasManyOptions as SequelizeHasManyOptions,
|
HasManyOptions as SequelizeHasManyOptions,
|
||||||
Utils,
|
Utils
|
||||||
} from 'sequelize';
|
} from 'sequelize';
|
||||||
import { Collection } from '../collection';
|
import { Collection } from '../collection';
|
||||||
|
import { Reference } from '../features/ReferencesMap';
|
||||||
import { checkIdentifier } from '../utils';
|
import { checkIdentifier } from '../utils';
|
||||||
import { MultipleRelationFieldOptions, RelationField } from './relation-field';
|
import { MultipleRelationFieldOptions, RelationField } from './relation-field';
|
||||||
import { Reference } from '../features/ReferencesMap';
|
|
||||||
|
|
||||||
export interface HasManyFieldOptions extends HasManyOptions {
|
export interface HasManyFieldOptions extends HasManyOptions {
|
||||||
/**
|
/**
|
||||||
@ -155,15 +155,18 @@ export class HasManyField extends RelationField {
|
|||||||
database.removePendingField(this);
|
database.removePendingField(this);
|
||||||
// 如果关系表内没有显式的创建外键字段,删除关系时,外键也删除掉
|
// 如果关系表内没有显式的创建外键字段,删除关系时,外键也删除掉
|
||||||
const tcoll = database.getCollection(this.target);
|
const tcoll = database.getCollection(this.target);
|
||||||
const foreignKey = this.options.foreignKey;
|
|
||||||
const field = tcoll.findField((field) => {
|
if (tcoll) {
|
||||||
if (field.name === foreignKey) {
|
const foreignKey = this.options.foreignKey;
|
||||||
return true;
|
const field = tcoll.findField((field) => {
|
||||||
|
if (field.name === foreignKey) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return field.type === 'belongsTo' && field.foreignKey === foreignKey;
|
||||||
|
});
|
||||||
|
if (!field) {
|
||||||
|
tcoll.model.removeAttribute(foreignKey);
|
||||||
}
|
}
|
||||||
return field.type === 'belongsTo' && field.foreignKey === foreignKey;
|
|
||||||
});
|
|
||||||
if (!field) {
|
|
||||||
tcoll.model.removeAttribute(foreignKey);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const association = collection.model.associations[this.name];
|
const association = collection.model.associations[this.name];
|
||||||
|
Loading…
Reference in New Issue
Block a user