Я пытаюсь засеять базу данных с помощью knex. С помощью вкладчиком, я успешно высевают одну таблицу, где нужно сделать несколько шагов:Почему моя цепочка обещаний не работает?
- мне нужно вытащить значения идентификаторов из нескольких внешних таблиц, так что я могу заполнить значения внешнего ключа в таблицы ПОСЕВНОЙ в ,
- n записей в таблице посева.
- Заполните стол.
Как уже упоминалось, у меня это работает для одного стола. Поскольку я умнее, чем крыша, и мне нужно сделать почти то же самое для другой таблицы, я просто скопировал то, что работал в первом файле семени, упал в второй файл семени, сделал пару подходящих модификаций (в частности , во второй таблице мне нужно только заполнить 1 значение внешнего ключа на данный момент) и ... это не сработает.
Я в затруднении. Конечно, в этом коде есть какая-то глупость, но я не могу ее найти. Я пытаюсь засеять таблицу units
, которую я должен заполнить значением properties.id
.
exports.seed = function(knex, Promise) {
console.log('Seeding the %s table...', tableName);
Promise.resolve([
'properties',
])
.map(function(table) {
// Pull foreign key values (property_id)
var ids = knex.select('id').from(table).pluck('id');
// AT THIS POINT THE ids VARIABLE HAS A VALUE
return ids;
})
.spread(function(properties) {
// BUT I NEVER SEE THIS LOG PRINT
console.log('SPREADING UNITS');
});
};
Что я делаю неправильно? Я сбросил .catch()
и .error()
в эту вещь, но ничего не записывается в журнал. Каким-то образом я просто никогда не погружаюсь в метод .spread(...)
.
UPDATE
По какой-то стоит, это содержание .map
метода, прежде чем он вернулся ...
{ client:
{ Formatter: { [Function: Formatter_MySQL] super_: [Function: Formatter] },
Raw: { [Function: Raw_MySQL] super_: [Object] },
Transaction: { [Function: Transaction_MySQL] super_: [Object] },
QueryBuilder: { [Function: QueryBuilder_MySQL] super_: [Object] },
QueryCompiler: { [Function: QueryCompiler_MySQL] super_: [Function: QueryCompiler] },
migrationConfig: { tableName: 'knex_migration', directory: './migrations' },
seedConfig: { directory: './seeds' },
Runner: { [Function: Runner_MySQL] super_: [Function: Runner] },
connectionSettings:
{ host: '127.0.0.1',
port: '3306',
user: 'root',
password: '',
database: 'realster',
timezone: 'UTC',
charset: 'utf8',
debug: false },
Pool: { [Function: Pool_MySQL] super_: [Function: Pool] },
databaseName: 'realster',
pool: { client: [Circular], config: [Object], genericPool: [Object] },
_events: { start: [Function], query: [Function] },
Seeder: { [Function: Seeder_MySQL] super_: [Function: Seeder] } },
_single: { table: 'properties', pluck: 'id' },
_statements:
[ { grouping: 'columns', value: [Object] },
{ grouping: 'columns', type: 'pluck', value: 'id' } ],
_errors: [],
_joinFlag: 'inner',
_boolFlag: 'and',
_notFlag: false,
and: [Circular],
_method: 'pluck' }
Вы используете '.spread()' это это Блюберд? –
@SecondRikudo: 'spread' - это не только метод синей птицы. '.map' и' Promise.join' делают это скорее всего :-) – Bergi
@Bergi Да, knex использует обещания синей птицы. –