我正在使用Seneca路由API调用和express来服务我的文件。问题是,在从API中获取数据之后,我似乎无法找到将响应发送回客户端的方法。使用res.send,我只会使用,但是由于我是在Seneca上下文中,所以我不能。在文档中没有找到任何关于这个问题的参考。
"use strict";
const bodyParser = require('body-parser');
const express = require('express');
const jsonp = require('jsonp-express');
const Promise = require('bluebird');
const path = require('path');
const seneca = require('seneca')();
const app = express();
module.exports = (function server( options ) {
seneca.add('role:api,cmd:getData', getData);
seneca.act('role:web',{use:{
prefix: '/api',
pin: {role:'api',cmd:'*'},
map:{
getData: {GET:true} // explicitly accepting GETs
}
}});
app.use( seneca.export('web') )
app.use(express.static(path.join(__dirname, '../../dist/js')))
app.use(express.static(path.join(__dirname, '../../dist/public')))
app.listen(3002, function () {
console.log('listening on port 3002');
});
function getData(arg, done){
//Getting data from somewhere....
//Here I would like to send back a response to the client.
}
}()) 发布于 2018-05-19 05:29:39
看起来,与“web”相关的功能现在被移动到模块“seneca”中,以及用于express的单独适配器。我得到了以下修改版本的工作。
"use strict";
const express = require('express');
const app = express();
const seneca = require('seneca')({ log: 'silent' });
const web = require('seneca-web');
let routes = [{
prefix: '/api',
pin: 'role:api,cmd:*',
map: {
getData: {
GET: true
}
}
}];
let config = {
context: app,
routes: routes,
adapter: require('seneca-web-adapter-express')
};
seneca.add('role:api,cmd:getData', getData);
seneca.use(web, config);
function getData(arg, done){
done(null, {foo: 'bar'});
}
seneca.ready(() => {
app.listen(3002, () => {
console.log('listening on port 3002');
});
});发布于 2016-03-21 11:01:25
根据senecajs文件,您应该能够在getData方法中调用done()来返回/发送值/响应。请考虑以下几点:
在这里,我能够点击/api/getData并接收到{foo: 'bar'}的响应。
"use strict";
const express = require('express');
const seneca = require('seneca')();
const app = express();
seneca.add('role:api,cmd:getData', getData);
seneca.act('role:web',{use:{
prefix: '/api',
pin: {role:'api',cmd:'*'},
map:{
getData: {GET:true} // explicitly accepting GETs
}
}});
app.use(seneca.export('web'));
app.listen(3002, function () {
console.log('listening on port 3002');
});
function getData(arg, done){
done(null, {foo: 'bar'});
}https://stackoverflow.com/questions/36129008
复制相似问题