Node.js Knex.js:创建表并插入数据

Node.js Knex.js:创建表并插入数据,node.js,knex.js,Node.js,Knex.js,考虑到我有这样一个Knex.js脚本: exports.up = function(knex, Promise) { return knex.schema.createTable('persons', function(table) { table.increments('id').primary(); table.string('name').notNullable(); }); }; 它当前创建一个表 如何将后续insert语句添加到此脚本

考虑到我有这样一个Knex.js脚本:

exports.up = function(knex, Promise) {
    return knex.schema.createTable('persons', function(table) {
        table.increments('id').primary();
        table.string('name').notNullable();
    });
};
它当前创建一个表

如何将后续insert语句添加到此脚本

我想做的是添加一行如下(或类似):

我不确定我是否理解这种基于承诺的方法是如何工作的。我应该用insert语句编写另一个脚本吗?或者我可以将它们附加到我现有的脚本中吗


不幸的是,我在Knex.js文档中找不到任何完整的create+insert示例。

then方法返回一个Promise,您可以在创建表后使用它来实现插入。例如:

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")
    ]);
};

谢谢,这比我想出的答案更有意义。我在这里缺乏承诺方面的经验。你好。新的knex和书架。只是想知道为什么在方法名中使用up和down,我的意思是在代码中如何使用这些方法用于升级或降级数据库方案(结构)通常您不使用代码中的这些函数,而是从终端命令行创建这些文件,Knex library试图让您更安全地更改数据库结构,特别是当您希望在每次升级数据库时,将本地或开发数据库中的数据库结构更改反映到生产数据库中时,up函数将运行,当前数据库的版本将保存在特殊数据库中当您不需要承诺时,表名为migrate,反之亦然。
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")
    ]);
};