12

Node.js + Express + Bookshelf.js を学習する個人的なプロジェクトに取り組んでいます。クエリはどこで作成しますか? 特に、次のコードで「ORDER BY」または「WHERE」を設定するにはどうすればよいですか?

var Accounts = require('../collections/accounts').collection;

new Accounts().fetch({
    withRelated: ['folders']
}).then(function(collection) {
    // process results
});

Bookshelf.js は、Laravel の Elequent (PHP) で使い慣れた、ポリモーフィック リレーションシップやサブ式などの機能を提供しているように見えるので、学習したいと考えています。ただし、ドキュメントはあまり詳細ではなく、例を見つけようとすることはほぼ不可能であることがわかりました.

助けてくれてありがとう。

ロビン

4

3 に答える 3

11

これが古い投稿であることは知っていますが、ここに私の見解があります。BookshelfJS は素晴らしいですが、単純な機能がいくつか欠けています。という名前の独自の基本モデルを作成しましたCloset

の場合orderByCloset次のようになります。

var Closet = DB.Model.extend({

    /**
     * Orders the query by column in order
     * @param column
     * @param order
     */
    orderBy: function (column, order) {
        return this.query(function (qb) {
            qb.orderBy(column, order);
        });
    }
});

Closet私の他のモデルは の代わりに消費しBookshelf.Modelます。次に、次を直接使用できますorderBy

new Accounts()
    .orderBy('name', 'DESC')
    .fetch()
    .then(function(collection){
        // process results
    });
于 2015-03-20T00:04:07.793 に答える
10

単純に行うこともできます

var Accounts = require('../collections/accounts').collection;

new Accounts().query('orderBy', 'columnname', 'asc').fetch({
    withRelated: ['folders']
}).then(function(collection) {
    // process results
});

クエリビルダーにアクセスせずに。

于 2015-01-26T02:10:00.263 に答える