knex创建表并从数组中插入数据

时间:2016-04-18 04:49:57

标签: knex.js jsx

我在迁移文件中有以下代码:

import knex from 'knex'
import filterWordsArray from '../seeds/filter_words'
const tables = ['filter_words'];

export async function up(knex) {
  await knex.schema.createTable('filter_words', (t) => {
    t.uuid('id').primary().defaultTo(knex.raw('uuid_generate_v4()'));
    t.string('word');
  }).then(function () {
    return knex("filter_words").insert(
      filterWordsArray
    );
  })

  return Promise.resolve();
};

export async function down(knex) {
  for (let table of tables) {
    await knex.schema.dropTable(table);
  }
  return Promise.resolve();
};

包含filterWordsArray的文件包含以下内容:

export const filterWordsArray = [
{ 
word: "something"
},
{ 
word: "rather"
},
{ 
word: "filter"
},
{ 
word: "another"
},
. . .
];

我运行knex migrate:latest,没有错误。

$> knex migrate:latest
Using environment: development
Batch 3 run: 1 migrations
.../migrations/23460417191457_add_filter_words.js
$>

但是当我查看数据库时,表已创建,但没有插入数据。

所以这是一个Postgresql数据库;如果我要手动插入数据,我会去:

mydb=# insert into filter_words(word) values ('something');
mydb=# select * from filter_words;
                  id                  |   word
--------------------------------------+-----------
 2ab8f5d0-ce20-41c2-a0e9-49cbe1b4bd3b | something
(1 row)

我在这里想念的是什么?

1 个答案:

答案 0 :(得分:0)

好的,我找到了一种让它工作的方法,不确定它是否是唯一的/最好的。将导入更改为:

import {filterWordsArray} from '../seeds/filter_words'