0

次のコードは、作成中の新しいノード アプリのユーザー向け部分です。

var loadInvoice = function(req, res, next) {
    Invoice.findById(req.params.invoiceId, function (err, invoice) {
        if (err) {
            res.send(404, 'Page not found');
        } else {    
            req.invoice = invoice;
            next();
        }
    });
};

app.namespace('/invoices/:invoiceId', loadInvoice, function () {

    app.get('', function(req, res){
        var templateVals = {
            //some template data
        };
        res.render('paymentselection', templateVals);
    });

    app.post('', function(req, res){
        var data = {
            // some data for the apiCall
        };

        someAPI.someRequest(data, function(err, data) {
            console.log(res.status());
            res.redirect(data.url);
        });
    });

});

最初のメソッドは、ユーザーがボタンを押して同じ URL に投稿する確認ページを返します。これにより、外部 Web サイトへのリダイレクトがトリガーされます。

これはすべて一度だけ機能します。リクエストが 1 つおきに送信されると、Cant set headers というメッセージが表示されてアプリがクラッシュします。コードを注意深く調べたところ、これが発生する理由が見つからなかったため、場所ヘッダーが設定されていることを実際に確認する console.log 行を追加しました。しかし、現在のリクエストではなく、前のリクエストでsomeAPIから取得した値に設定されています。

これは私にはまったく意味がありません。この値をどこにも保存したり、このデータのキャッシュや永続化を行ったりすることはありません。

誰がこれを引き起こしているのか知っていますか?

Express、express-namespace、mogoose、swig を使用しています

4

1 に答える 1

0

問題は、「someAPI」内で使用される「Restler」libaray によって引き起こされていることがわかりました。これがどのように可能かはわかりませんが、別のものと交換すると問題が解決しました。

于 2013-10-31T10:52:07.520 に答える