eggjs / eggjs/egg

egg-sequelize: 由于core项目中loadToApp已经是异步函数,导致在sequelize中没有正确的设置表对象

Open
#5,396 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
19k
Forks
1.8k
PR merge metrics
No merged PRs in 30d

Description

### 在此输入你需要反馈的 Bug 具体信息(Bug in Detail):

```
app.loader.loadToApp(modelDir, target, {
caseStyle: 'upper',
ignore: config.exclude,
filter(model) {
if (!model || !model.sequelize) return false;
models.push(model);
return true;
},
initializer(factory) {
if (typeof factory === 'function') {
return factory(app, sequelize);
}
},
});

//这里由于loadToApp是异步的会直接退出,导致后来的ctx.model上没有具体的表对象
Object.assign(model[delegate[len - 1]], app[target]);

models.forEach(model => {
typeof model.associate === 'function' && model.associate();
});

return model[delegate[len - 1]];
```

### 可复现问题的仓库地址(Reproduction Repo)

```
app.loader.loadToApp(modelDir, target, {
caseStyle: 'upper',
ignore: config.exclude,
filter(model) {
if (!model || !model.sequelize) return false;
models.push(model);
return true;
},
initializer(factory) {
if (typeof factory === 'function') {
return factory(app, sequelize);
}
},
});

//这里由于loadToApp是异步的会直接退出,导致后来的ctx.model上没有具体的表对象
Object.assign(model[delegate[len - 1]], app[target]);

models.forEach(model => {
typeof model.associate === 'function' && model.associate();
});

return model[delegate[len - 1]];
```

### Node 版本号:

v23.2.0

### Eggjs 版本号:

4.0.9

### 相关插件名称与版本号(PlugIn and Name):

"egg-sequelize": "^6.0.0",

### 操作平台与版本号(Platform and Version):

mac

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.