javascript - knex.js 管道表达

标签 javascript express knex.js

我在 knex.jsexpress 中遇到问题,代码如下:

userRouter.get('/:userId', function (req, res) {
  DB('users').where({
    id: req.params.userId
  }).first('name').pipe(res);
});

正如 knex.js 文档所写:knex.js 查询有一个流接口(interface)。

但我无法将结果通过管道传递给 express(node http api) 响应。

上面的代码不起作用。

有一个“TypeError”:

TypeError: first argument must be a string or Buffer

出了什么问题?

最佳答案

创建一个流并首先将其通过管道传输到 JSONStream,最后通过管道将其传输到您的响应对象

var knex = require('knex')({
  client: 'mysql',
  connection: {
    host     : '...',
    user     : '...',
    password : '...',
    database : '...'
  }
});
var JSONStream = require('JSONStream');
var express = require('express');
var app = express();

app.get('/', function (req, res) {
    var sql = knex.select('*').from('table').limit(3);
    res.set('Content-Type', 'application/json');
    sql.stream().pipe(JSONStream.stringify()).pipe(res);
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

关于javascript - knex.js 管道表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26376454/

相关文章:

javascript - 获取 Bookshelf.js 模型时使用 "new"有什么区别?

javascript - "x"不是构造函数

javascript - Kendo MultiSelect 无法读取属性 'value'

node.js - Node.js Express 是否包含中间件列表?

postgresql - 如何从 Knex/Postgresql 查询返回一个普通值?

javascript - 如何将单个文件指定为仅种子

javascript - 从 JSON 自动完成 Bootstrap 弹出窗口的内容

javascript - 与商店 : Cannot read property 'state' of undefined (pure-react-carousel)

javascript - 用于将子文档连接到其父文档的端点,不返回任何内容

html - 使用 Node、Express 和 EJS 压缩 HTML?