2016-04-18 4 views
0

я следующий код в файл переноса:knex создать таблицу и вставить данные из массива

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) 

Что мне здесь не хватает, пожалуйста?

ответ

0

ОК, я выяснил, как это сделать, не уверен, что это единственный/лучший. Изменен импорт:

import {filterWordsArray} from '../seeds/filter_words' 
Смежные вопросы