将 koa v1 迁移到 v2
Migrating koa v1 to v2
我在 koa 中使用了一些模块,他们只有这个文档是用 koa v1 而不是 v2 编写的。由于我以前从未使用过 v1,所以我不知道如何在 v2 中编写它。
app
.use(body({
IncomingForm: form
}))
.use(function * () {
console.log(this.body.user) // => test
console.log(this.request.files) // or `this.body.files`
console.log(this.body.files.foo.name) // => README.md
console.log(this.body.files.foo.path) // => full filepath to where is uploaded
})
将 function *()
更改为 async function(ctx)
其中 koa2 中的 ctx
就像 koa1 中的 this
从 Koa v1 更改为 Koa v2 是一个非常简单的过程。版本提升的唯一原因是它使用 async
函数而不是中间件的生成器。
示例 v1 中间件:
app.use(function* (next) {
yield next
this.body = 'hello'
})
示例 v2 中间件:
app.use(async (ctx, next) => {
await next()
ctx.body = 'hello'
})
使用 async
函数而不是生成器,并接受 ctx
作为参数而不是使用 this
.
app
.use(body({
IncomingForm: form
}))
.use(function(ctx) {
console.log(ctx.body.user) // => test
console.log(ctx.request.files) // or `this.body.files`
console.log(ctx.body.files.foo.name) // => README.md
console.log(ctx.body.files.foo.path) // => full filepath to where is uploaded
})
我在 koa 中使用了一些模块,他们只有这个文档是用 koa v1 而不是 v2 编写的。由于我以前从未使用过 v1,所以我不知道如何在 v2 中编写它。
app
.use(body({
IncomingForm: form
}))
.use(function * () {
console.log(this.body.user) // => test
console.log(this.request.files) // or `this.body.files`
console.log(this.body.files.foo.name) // => README.md
console.log(this.body.files.foo.path) // => full filepath to where is uploaded
})
将 function *()
更改为 async function(ctx)
其中 koa2 中的 ctx
就像 koa1 中的 this
从 Koa v1 更改为 Koa v2 是一个非常简单的过程。版本提升的唯一原因是它使用 async
函数而不是中间件的生成器。
示例 v1 中间件:
app.use(function* (next) {
yield next
this.body = 'hello'
})
示例 v2 中间件:
app.use(async (ctx, next) => {
await next()
ctx.body = 'hello'
})
使用 async
函数而不是生成器,并接受 ctx
作为参数而不是使用 this
.
app
.use(body({
IncomingForm: form
}))
.use(function(ctx) {
console.log(ctx.body.user) // => test
console.log(ctx.request.files) // or `this.body.files`
console.log(ctx.body.files.foo.name) // => README.md
console.log(ctx.body.files.foo.path) // => full filepath to where is uploaded
})