0

ビューに複数のデータ セットを渡すことができるようにしたいと考えています。コントローラーで現在行っている方法は次のとおりです。

  transactions: function (req, res) {

    var queryexpenses = 'select * from expense order by name';

    Expense.query(queryexpenses, function (err, expense) {
        this.expenses = expense;
    });

    if (req.param('filter')) {
        var where = 'where fk_expense = ' + req.param('expensefilter');
        where += ' and datePosted > "' + req.param('yearfilter') + '-01-01" ';
        where += ' and datePosted < "' + req.param('yearfilter') + '-12-31" ';
    } else {
        var where = 'where fk_expense IS NULL';
    }

    var query = 'select * from accounting ' + where + '  order by description';

    Accounting.query(query, function (err, trans) {
        this.transactions = trans;
    });

    var total = 0;
    _.each(this.transactions, function (element, index, list) {
        // format dates
        element.datePosted = dateFormat(element.datePosted, 'dd/mm/yyyy');
        var tmp0 = element.amount
        var tmp1 = tmp0.replace(/ /g, '');
        var tmp2 = parseFloat(tmp1);
        total += tmp2;
    });

    this.total = total.toFixed(2);
    return res.view();
}

これが私がやろうとしていることを達成できる唯一の方法ですが、クエリオブジェクトを「this」スコープに入れることによって引き起こされたと思われる問題があります。最初の問題は、最初のリロードでサーバーを再起動した後にページがクラッシュすることです。2 つ目の問題は、すべてが 1 歩遅れて発生しているように見えることです。つまり、UI でコマンドを発行した場合 (フォームの送信など)、同じアクションを 2 回実行しない限り何も起こりません。

では、複数のデータセットを「this」でスコープせずにビューに渡すにはどうすればよいでしょうか?

4

1 に答える 1

0
res.view({
    corndogs: [{name: 'Hank the Corndog'}, {name: 'Lenny the Corndog'}]
});

関連するドキュメント ページは次のとおりです: http://sailsjs.org/#!documentation/views

また、 SQL クエリを作成するためにWaterlineを十分に活用していないようです。

于 2013-11-05T03:07:21.377 に答える