Tag: koa

如何做优雅的停止koajs服务器?

expressjs有很多优雅的停止的例子,我怎样才能达到koajs? 我想断开数据库连接 我有一个mongoose数据库连接,和2 oracle数据库连接( https://github.com/oracle/node-oracledb )

Mongodb + Node:什么时候closures

我正在研究Koa + Mongodb后端。 我的问题是:什么时候应该closures数据库,还是Mongodbpipe理,因为我现在没有closures它们中的任何一个,似乎很好。 // app.js const Koa = require('koa') const database = require('./database') const app = new Koa() database .connet() .then(() => {app.listen(':8080')}) .catch((err) => {console.error(err)}) // ./database.js const MongoClient = require('mongodb').MongoClient const Model = require('./model') class Database { async connect() { if (!db) { db = await MongoClient.connect("localhost:27017") this.item = new Model(db, 'item_collection') […]

Nodejs,将bin文件作为BYTEA存储到pgsql(损坏的文件)

出于某种原因,我需要将一些文件(主要是图像或PDF)存储到我的数据库(PG 9.2.20)。 这些文件是由用户上传,当我下载他们,他们已经损坏。 我在使用nodejs。 我存储文件的列types是BYTEA。 这是我如何存储他们: const { files, fields } = await asyncBusboy(ctx.req); const fileName = files[0].filename; const mimeType = files[0].mimeType; const bufferedFile = fs.readFileSync(files[0].path, { encoding: 'hex' }); const fileData = `\\x${bufferedFile}`; //Just a basic insert into with knex.raw const fileId = await storageModel.create(fields.name, fields.description, fileName, mimeType, fileData, ctx.user); 这就是我如何检索我的文件: const file = […]

无法在函数外使用variables

我正在使用Koa模块 – 节点js和mysql&遇到问题。 在注册函数(在welcomeCtrl.js中) var bcrypt = require('bcrypt'); module.exports = { signup: function* (next) { bcrypt.genSalt(10, function(err, salt) { console.log(salt); bcrypt.hash(password, salt, function(err, hash) { // Store hash in your password DB. console.log(hash); //no error var hashedPassword = hash; }); }); console.log(bcrypt.hash.hash); //gives error //or console.log(bcrypt.hash.hahedPassword); //gives error queryString = "insert into user(email,name, phone, password, […]

Koa中的asynchronous函数奇怪的问题

这是代码片段: //Category.service.js … exports.update = async (ctx, next) => { const {categoryId} = ctx.params const _category = ctx.request.body // ctx.body = {key: 'test'} const category = await Category.get(categoryId) console.log(category) ctx.body = await category.update(_category) console.log(ctx.response) } … 当我发送请求时,它返回“未find”。 但terminal打印正确的结果: Category { id: 1, name: 'Javascript', description: 'This is a test for category update.' } { status: […]

Node.js / Koa2服务器 – 请求后执行一个工作分钟

我有一个Koa2 / Node.js应用程序(使用async/await ),我想执行一个工作X分钟后请求,其中X是一个随机数分钟范围从20 – 100(我想用它来发送自动欢迎邮件给注册的用户,并使其看起来像是由我个人发送的)。 所以我可以使用setTimeout来做到这一点,设置200分钟的定时器是否合理? 当然,如果我的应用程序崩溃,电子邮件将不会被发送,但我会跟踪数据库中的所有注册,所以在极less数情况下,我会自己发送电子邮件。

能够保证尽快处理结果,而不是等待所有的承诺

我正在使用KOA2演示一个大pipe道。 我想在准备就绪时尽快输出结果,而不是等到所有结果都准备好(然后输出全部)。 我坚持下面的代码:( get_users或get_posts返回一个承诺) async (ctx, next) => { ctx.res.write("<html><body>…") let data = await Promise.all( [res_fetch.get_users(), res_fetch.get_posts()] ) ctx.res.write(data[0]) ctx.res.write(data[1]) ctx.res.write("</body></html>") ctx.res.end() } 理想情况下,应该是这样的:(我不知道如何实现) let data = await Promise.oneFinished( [res_fetch.get_users(), res_fetch.get_posts()] ) if (data[0] is finished) ctx.res.write(data[0]) else if (data[1] is finished) ctx.res.write(data[1])

Expressjs或Koajs中静态文件的相对path

我有一个类似于我的应用程序的结构: ApplicationA a.js ApplicationB b.js ApplicationC c.js 上市 我在public目录中有一些静态文件。 位于ApplicationA目录中的ApplicationA程序a.js如何访问public目录。

在Koa中等于req.on('data')

Koa.js中以下代码的等式是什么: req.on('data', function(data) { console.log(data); }

将callback转换为thunk

我用koa.js使用mongoose(也许是一个不好的select,但必须坚持下去)。 我最初的callback函数是: var _project = yield parse(this); var userdetails = this.req.user; var that = this ; //============================================================= //FInd a user , check the project name exists under the user, if not then create one //============================================================= User.findOne({ '_id': userdetails._id }, function (err, user) { if (err) { this.body = "please login again , your session seems […]