Articles of koa

如何用asynchronousvalidation更新mongoose模型(node / koa2)

从客户端,用户有一个表格填写他们可以更新他们的电子邮件或密码。 他们必须input当前密码才能validation请求。 之后,如果电子邮件地址正在被修改,那么电子邮件validation器应该运行以检查新的电子邮件地址是否已经被注册到另一个用户。 所以,在用户从客户端发送请求后,我得到以下信息: { userId: 'This is the ID of their entry in the database', currentPassword: 'Current password to check against one stored in database', newPassword: 'New password, will be blank if user has not requested a new password', email: 'Email address, will be the same if user has not requested a new email' […]

ctx.render不会redirect页面

我很确定这是因为ctx.render函数只是为了渲染页面,但我不知道该怎么做才能做我想做的事情。 基本上,我试图redirect用户到用户的mypagelogin后,在标题中的jwt令牌,所以我用axios发送请求到服务器,服务器路由器function呈现dynamicpug文件与给定的数据。 我想把jwt数据放到帕格文件中,但是当我发送请求的时候,页面只是刷新自己,实际上并没有redirect到mypage。 这是代码 客户 try { let res = await axios(loginOpt) await store.set('jwtToken', res.data.token) let mpOpt = {headers: {"Authorization": 'Bearer ' + store.get('jwtToken')}} axios.get(`/u/${payload.email}`, mpOpt) } catch (e) { console.error("failed to send login request", e) } 路由器 router.get('/:userName', async (ctx, next) => { console.log("jwt TOKEN IS", ctx.header.authorization) let renderData = { userName: userName, profilePic: […]

如何redirect页面的标题?

我想redirect页面来修改标题的职位。 但是我发现在头部redirect在技术上是不可能的。 如果我发送请求到带有头部的节点服务器,将页面redirect到发布修改页面,那么没有办法使用头部redirect到不使用多个路由器的页面(因为路由器function只是用于渲染帕格文件,它们不能同时完成)

testing后closures服务器和数据库连接

我有与mongo连接的koa服务器,并使用supertest模拟服务器和发送请求,作为testing框架。 const app = new Koa() … export default app.listen(PORT, (err) => { if (err) console.log(err) if (!IS_TEST) { console.log(`Server running on port: ${PORT}`) } }) 在成功完成testing或者服务器连接失败之后,koa服务器连接testing结束多久? testing例子: import supertest from 'supertest' import mongoose from 'mongoose' import server from '../../../app/server' import User from '../../../app/models/user' const r = supertest.agent(server.listen()) afterEach(async (done) => { await mongoose.connection.db.dropDatabase() done() […]

在koa中间件中使用ctx

我有一个我正在使用的koa中间件: .use(signS3()) 我现在想要做的是使用来自ko​​a的ctx对象来自signS3()的configuration对象。 我想要做这样的事情: .use((ctx, next) => signS3({ keyPrefix: ctx.host })(ctx, next)) 但是这不起作用。 我想我的语法错了,将不胜感激任何投入如何做到这一点。

处理file upload在nodejs后端由xmlhttprequest中止

我已经实现了通过XMLHttpRequest专门从React前端发送文件到nodeJS(koa v1)后端,以获得跟踪file upload进度的能力。 作为补充,我决定通过标准的xhr.abort()函数添加上传取消。 没关系,在客户端工作得很好,但每次我得到后端引发的Parse Error : Error: Parse Error at Error (native) at Socket.socketOnEnd (_http_server.js:422:22) at emitNone (events.js:91:20) at Socket.emit (events.js:185:7) at endReadableNT (_stream_readable.js:973:12) at _combinedTickCallback (internal/process/next_tick.js:74:11) at process._tickDomainCallback (internal/process/next_tick.js:122:9) 下面是处理文件stream并将它们保存到本地机器的控制器的代码。 在formData之前,它是通过co-busboy formDataparsing的 module.exports.saveFiles = function* (files) { const savedFiles = []; let file = yield files; while (file) { const fileName = file.filename; […]

Koa中间件订购

我遇到了koa js和中间件命令的问题。 我使用多个中间件,Koa路由器,强大的koa静态文件夹和一个用于设置标题。 现在,按照目前的顺序,当我从前端通过API将file upload到后端时,它会抛出一个CORS错误,这意味着头文件不在那里(所以这个中间件没有正确加载)。 当我移动它们时,别的东西就会停止工作。 这是我的代码: this.app.use(serve({rootDir: './uploads', rootPath: '/public/uploads/'})); this.app.use(router.routes()); this.app.use(formidable()); this.app.use((ctx, next) => { // Website you wish to allow to connect ctx.set('Access-Control-Allow-Origin', '*'); // Request methods you wish to allow ctx.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // Request headers you wish to allow ctx.set('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // Set to true if […]

Koa中的协程和发生器之间的区别?

Coroutines和Generators之间的区别对我来说是模糊的。 我会很感激,如果有人可以阅读文章callbackvs协程 – 看看callbackVS发电机vs协程 “ 在https://medium.com/code-adventures/174f1fe66127 …然后解释在这篇文章中说明/展示了发生器和协程之间的区别和竞争(标题中是否使用了“vs”)? 更一般地说,我的问题是这个区别究竟是什么,这种区分是否适用于在Koa中构build应用程序时(在Node.js中)如何区别处理asynchronous请求的编码模式?

Koa会话:MySQL

一个人如何将koa会话连接到一个mysql存储? 它看起来不像一个MySQL商店已经开发,所以我想我可以开发。 有没有其他解决scheme,而不是build立商店?

为什么PUT请求体未定义?

我正在向我的koajs服务器发出以下请求: $.ajax({ type : 'PUT', // this.request.body undefined server side // type : 'POST', // this.request.body all good server side url : url, data : body, dataType : 'json' }) 但在服务器端, this.request.body总是未定义的。 如果我将请求types更改为POST,它工作正常。 有任何想法吗? 编辑 我正在使用koa-route 。 编辑2 刚刚意识到我正在使用koa-body-parser ,这可能更相关。