meteor采摘器服务器端路由器使用快递中间件

我想使用select器服务器端路由器中的res.send('string')res.json(json)在我的meteorrestapi快递函数。 在文档中,它说:

您可以使用现有的连接和表示中间件没有任何问题。

我如何使用res.send和res.json等快捷function? 当我尝试使用它们时,它告诉我他们不是一个function。

我有我的服务器的以下main.js文件:

 import { Meteor } from 'meteor/meteor'; import { Picker} from 'meteor/meteorhacks:picker'; var bodyParser = Meteor.npmRequire('body-parser'), methodOverride = Meteor.npmRequire('method-override'), logger = Meteor.npmRequire('morgan'); Picker.middleware(bodyParser.json()); Picker.middleware(bodyParser.urlencoded({extended:false})); Picker.middleware(logger('dev')); Picker.middleware(methodOverride('X-HTTP-Method')); // Microsoft Picker.middleware(methodOverride('X-HTTP-Method-Override')); // Google/GData Picker.middleware(methodOverride('X-Method-Override')); Meteor.startup(() => { console.log('meteor server started'); var postRoutes = Picker.filter(function(req, res) { return req.method == "POST"; }); postRoutes.route('/post/:id', require('./routes/helloworld')); }); 

而下面的路由动作(routes / helloworld.js):

 function helloworld(params, req, res, next) { res.send('id:' + params.id); } module.exports = helloworld; 

我得到以下错误:

 TypeError: res.send is not a function 

当我尝试使用res.json时,它会发出同样的错误…

packages.json:

 { "body-parser": "1.15.2", "chai": "3.5.0", "chai-http": "3.0.0", "method-override": "2.3.6", "mocha": "3.0.2", "moment": "2.14.1", "moment-timezone": "0.5.5", "morgan": "1.7.0", "supertest": "2.0.0", "supertest-as-promised":"4.0.0", "express":"4.14.0" } 

更新我发现我可以用这个代码模仿res.json:

 function helloworld(params, req, res, next) { console.log(req.body); res.setHeader( 'Content-Type', 'application/json' ); res.end( JSON.stringify({id:params.id}) ); } module.exports = helloworld; 

Picker / Meteor没有使用express,它没有res.send()和res.json()。

但是,您可以探索Restivus,这是一个自动处理json的高级api包装器。

http://meteorpedia.com/read/REST_API#Restivus

以下是上面链接的示例代码:

 if(Meteor.isServer) { Meteor.startup(function () { // Global configuration Api = new Restivus({ version: 'v1', useDefaultAuth: true, prettyJson: true }); // Generates: GET/POST on /api/v1/users, and GET/PUT/DELETE on /api/v1/users/:id // for Meteor.users collection (works on any Mongo collection) Api.addCollection(Meteor.users); // That's it! Many more options are available if needed... // Maps to: POST /api/v1/articles/:id Api.addRoute('articles/:id', {authRequired: true}, { post: { roleRequired: ['author', 'admin'], action: function () { var article = Articles.findOne(this.urlParams.id); if (article) { return {status: "success", data: article}; } return { statusCode: 400, body: {status: "fail", message: "Unable to add article"} }; } } }); }); }