var express = require('express');
var search = express.Router();
search.get('/', function(req, res, next) {
console.log('1');
dbCall(function(error, result) {
if (error) {
res.status(404).json();
} else {
res.json(result);
}
});
console.log('last');
next();
});
var dbCall = function(callback) {
var couchbase = require('couchbase');
var cluster = new couchbase.Cluster('couchbase://127.0.0.1');
var bucket = cluster.openBucket('default');
var doc;
var ViewQuery = couchbase.ViewQuery;
var query = ViewQuery.from('dev_test', 'allData');
bucket.query(query, function(err, viewResults) {
if (err) {
callback(err, null);
} else {
console.log('inqueryCall');
var results = viewResults;
callback(null, results);
console.log(results);
}
});
};
module.exports = search;我得到的错误是:错误:无法在发送后设置标头。在ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:346:11)
有人能在这里解释一下这个问题(不仅仅是解决方案)吗?
我添加了console.log,这里的问题是对异步的couchbase调用
发布于 2016-06-25 16:44:41
删除next()调用,这将导致此错误。next()在中间件中用于将流传递给下一个中间件或端点/路由。
search.get('/', function(req, res, next) {
dbCall(function(error, result) {
if (error) {
res.status(404).json();
} else {
res.json(result);
}
});
});https://stackoverflow.com/questions/38030579
复制相似问题