Javascript 需要一种在couchbase DB调用后设置res对象的方法;错误:Can';t在发送后设置标题";

Javascript 需要一种在couchbase DB调用后设置res对象的方法;错误:Can';t在发送后设置标题";,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我得到的错误是: 错误:发送头后无法设置头。 在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:346:11) 有人能在这里解释一下这个问题吗(不仅仅是解决方案) 我添加了console.log,这里的问题是couchbase调用asyncRemovenext()调用导致了此错误。next()在中间件中用于将流传递到下一个中间件或端点/路由 var express = require('express'); var sear

我得到的错误是: 错误:发送头后无法设置头。 在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:346:11)

有人能在这里解释一下这个问题吗(不仅仅是解决方案)

我添加了console.log,这里的问题是couchbase调用async

Remove
next()
调用导致了此错误。next()在中间件中用于将流传递到下一个中间件或端点/路由

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;
删除导致此错误的
next()
调用。next()在中间件中用于将流传递到下一个中间件或端点/路由

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;

已经有一段时间了,但是一旦你处理(并响应)了请求,你真的应该调用
next
?是的,正在努力删除它。谢谢。已经有一段时间了,但是一旦你处理(并响应)了请求,你真的应该给下一个打电话吗。谢谢