Tag: koa

如何在recursion生成器函数中产生请求?

我创build了一个生成器函数recursion检查一个string,并返回一个parsing的输出。 我正在尝试使用koa-request在生成器中发出请求,但是它正在返回undefined。 var parseUserExpression = function *() { var body = yield bodyParser.json(this); var fnString = body.ts; var res = yield parseRulesAndFunctions(fnString, null); this.body = res; }; // Recursive function var parseRulesAndFunctions = function *(aStr, start) { var res; start = start || 0; var fnDetails = getFnDetails(aStr, start); if (fnDetails.fnType === 'run') { var […]

从Node.JS服务器应用程序中发出GET请求,并将其发送到React.JS客户端

所以我有一个Koa / Node JS简单的后端,只是为了向外部API发出一个GET请求,然后将响应体传递给我正在构build的React JS客户端应用程序。 我是Koa或任何节点的JS或服务器的新手,所以不能真正弄清楚如何。 像这样的东西: var koa = require('koa'); var app = koa(); app.use(function *(){ http.get({host: somehost, path: somepath}, function(response) { this.body = Here send to React Client } ) }); app.listen(3000); 编辑:使用ExpressJS的答案也是受欢迎的。

Koa app在超级testing时挂起

我的超级用户/磁带testing文件如下所示: var test = require('tape'); var app = require('../../api'); var agent = require('supertest').agent var supertestCompatibleServer = agent(app.callback()); test('GET /Campus.svc', function (t) { supertestCompatibleServer .get('/Campus.svc') .expect(200) .expect('Content-Type', /json/) .end(function (err, res) { t.ifError(err, 'No error'); t.end(); }); }); 我正在testing的端点在启动服务器时可以正常工作,并且可以通过curl或浏览器手动点击。 testing运行良好,并通过,但他们只是挂在最后而不是完成。 实际的端点代码只是碰到数据库,并以json的forms返回一些logging。 什么可能导致testing挂起,我该如何解决?

aws-sdk上传到S3在KOA中工作,但在通过Mocha调用时停止工作

我需要从koa上传一个文件到s3,我对koa来说很新,可能丢失了一些明显的东西。 它实际上完成了200,但文件从来没有出现在S3上。 这里是我的app.js的一个片段: 'use strict'; var jwt = require('koa-jwt'); var bodyParser = require('koa-bodyparser'); var koaBody = require('koa-body'); const app = module.exports = require('koa')() .use(koaBody({multipart:true})) // this is to pase only multipart forms .use(require('./routes/common')) .use(require('./routes/auth')) .use(require('./routes/users_public')) .use(jwt({ secret: SECRET })) //protected routes below this line .use(require('./routes/subcontractors_private')) .listen(process.env.PORT || 3000); subcontractors_private.js看起来像这样: 'use strict'; var AWS = require('aws-sdk'); […]

节点JS – MVC – 命名约定

我通常提出一个应用程序结构如下: +—-my_awesome_nodejs_app | +—-app | | +—-app.js | | +—-node_modules | | +—-tomatoes | | | +—-tomatoes.controller.js | | | +—-tomatoes.helper.js | | | +—-tomatoes.model.js | | | +—-tomatoes.route.js | | +—-views | | | +—-tomatoes.pug | +—-public | | +—-tomatoes | | | +—-tomatoes.css | | | +—-tomatoes.js | +—-spec | | +—-tomatoes.spec.js 我赞成命名约定来匹配前端(例如example.com/tomatoes) […]

Koa和Stripe,等待呈现页面

我正在使用koa和stripe来处理一次付款。 它的工作原理应该是这样,但是在data被分配之前它会呈现页面。 我希望能够在分配数据之后呈现页面,以便id将显示在页面视图中,而不是未定义的。 我试图在callback函数中呈现页面,我404 not found 。 我试过在stripe.charges.create函数后面使用。因为stripe和promises是兼容的,但是它给出了相同的结果。 我现在的代码如下。 module.exports.payment = function* payment() { const params = this.request.body; let data; if (!params.stripeToken) { this.throw(400, "Sorry, something has gone awry."); } if (!params.amount) { this.throw(400, "A purchase amount must be supplied."); } const chargeAmount = params.amount * 100; const charge = stripe.charges.create({ amount: chargeAmount, currency: "USD", […]

参数化/准备好的陈述用法pg-promise

我使用pg-promise koa v2 。 我尝试做一个简单的SELECT 2 + 2; 在参数化/准备声明中testing我的设置: // http://127.0.0.1:3000/sql/2 router.get('/sql/:id', async (ctx) => { await db.any({ name: 'addition', text: 'SELECT 2 + 2;', }) .then((data) => { console.log('DATA:', data); ctx.state = { title: data }; // => I want to return num 4 instead of [Object Object] }) .catch((error) => { console.log('ERROR:', error); […]

Koa每次发送状态404

export async function getPlaces(ctx, next) { const { error, data } = await PlaceModel.getPlaces(ctx.query); console.log(error, data); if (error) { return ctx.throw(422, error); } ctx.body = data; } Koa每次发送404状态和空身,我做错了什么?

Koajs和curl与内容编码:gzip,放气

我正在寻找客户端(使用curl)和Koajs服务器与内容编码之间交换数据的简单示例:gzip,deflate。 更多细节:客户端有日志文件。 客户端压缩日志文件并将日志文件发送到服务器。 服务器解压日志文件并获取内容。 请给我curl命令和Koajs代码。 谢谢。

如何并行运行发生器function?

假设我有一个像这样的端点的Koa web服务器: const perform = require(…); // some generator function exports.endpoint = function* () { var results = yield getResults(); // Respond the results this.body = results; } exports.getResults = function* () { var actions = […]; var results = []; for (var action of actions) { var result = yield perform(action); results.push(results); } return […]