web-dev-qa-db-ja.com

Knex.js:テーブルを作成してデータを挿入する

私がこのようなKnex.jsスクリプトを持っているとすると:

exports.up = function(knex, Promise) {
    return knex.schema.createTable('persons', function(table) {
        table.increments('id').primary();
        table.string('name').notNullable();
    });
};

現在、テーブルを作成しています。

このスクリプトに後続の挿入ステートメントを追加するにはどうすればよいですか?

私がやりたいのは、次のような(または同様の)行を追加することです。

knex.insert({id: 1, name: 'Test'}).into('persons')

この約束に基づくアプローチがどのように機能するかを理解しているかどうかはわかりません。挿入ステートメントを使用して別のスクリプトを作成する必要がありますか?または、どういうわけか既存のスクリプトにそれらを追加できますか?

残念ながら、Knex.jsのドキュメントにcomplete create + insertの例は見つかりません。

5
SputNick

promiseを使用しない理由then次のような方法を実行できます。

exports.up = function (knex, Promise) {
    return Promise.all([
        knex.schema.createTableIfNotExists("payment_Paypal_status", function (table) {
            table.increments(); // integer id

            // name
            table.string('name');

            //description
            table.string('description');
        }).then(function () {
                return knex("payment_Paypal_status").insert([
                    {name: "A", description: "A"},
                    {name: "B", description: "BB"},
                    {name: "C", description: "CCC"},
                    {name: "D", description: "DDDD"}
                ]);
            }
        ),
    ]);
};

exports.down = function (knex, Promise) {
    return Promise.all([
        knex.schema.dropTableIfExists("payment_Paypal_status")
    ]);
};
19