CNode

求问 eggjs 在使用脚本导入各种数据需要复用 service 时,怎么独立进行 egg 的实例化呢?

问答
Llzwai发布于8 年前最后回复7 年前4 回复3905 浏览0 收藏

eggjs 都是用 router、controller、service 去做请求数据; 现在只想往数据库里面导入一批数据,不太清楚怎么独立实例化一个 Application 出来然后复用 service 里面的各种函数。

查看回复

回复 (4)

L
lzwai#1·8 年前

查了下文档,看了下 egg-mock 的初始化源码,这样就行:

'use strict';

const path = require('path');
const egg = require('egg');

const EGG_PATH = Symbol.for('egg#eggPath');

class Application extends egg.Application {
  get [EGG_PATH]() {
    return path.dirname(__dirname);
  }
}

const app = new Application();

app.ready();

const ctx = app.createAnonymousContext();

exports.app = app;
exports.ctx = ctx;

O
okoala#2·8 年前

可以 mock

H
HobaiRiku#3·8 年前

在app内合适的地方运行操作,使用app.createAnonymousContext()来创建匿名ctx,从而调用service的api,是否是这样?

L
loveshouhu#4·7 年前
'use strict';

(async () => {
  const mm = require('egg-mock');
  const app = mm.app({
    baseDir: __dirname,
  });
  await app.ready();
  console.log(app);
  const ctx = app.mockContext();
  console.log(await ctx.model.Address.findOne());
})();


eggjs 2.0 的模式,备注下,方便后人

参与回复
登录后即可参与回复。登录