Каркас акведука не генерирует миграции

Я пытаюсь сгенерировать миграцию из модели с помощью команды - «aqueduct db generate».

Это модель "request.dart" в lib> model (где у меня есть и другие модели, которые уже были перенесены без каких-либо проблем):

import 'package: dbapi / dbapi.dart';

class Request extends ManagedObject ‹_Request> реализует _Request {}

class _Request {

@managedPrimaryKey

int index;

Описание строки;

}

Однако он создает пустую миграцию, потому что не может распознать новую модель - «Запрос». Ниже приведен вывод команды "aqueduct db generate".

-- Aqueduct CLI Version: 2.5.0+1
-- Aqueduct project version: 2.5.0+1
-- Replaying migration files...
Replaying version 1
Replaying version 2
Replaying version 3
 -- The following ManagedObject<T> subclasses were found:
     Question
     UserProfile

* If you were expecting more declarations, ensure the files are visible in the application library file.

  -- Created new migration file (version 4).

примечание: новая модель request.dart имеет те же права доступа к файлам, что и предыдущие модели, которые я мог перенести.

Кто-нибудь еще сталкивался с такой же проблемой? Цените помощь!


person deepti    schedule 03.07.2018    source источник


Ответы (2)


Файл request.dart должен быть импортирован (напрямую или транзитивно) файлом библиотеки вашего приложения. В вашем случае это dbapi.dart.

Но маловероятно, что вы будете импортировать request.dart прямо в файл библиотеки. Вместо этого ваш файл библиотеки уже импортирует ваш RequestSink файл, который должен импортировать все файлы контроллеров, используемые приложением, а те должны импортировать любые модели, которые они используют.

Вероятный сценарий здесь заключается в том, что вы еще не используете этот класс в своем коде - как только вы начнете использовать его в контроллере или службе, он станет видимым для инструмента создания миграции. В противном случае вы можете просто импортировать его напрямую из файла приемника запроса.

person Joe Conway    schedule 03.07.2018
comment
Спасибо, Джо! Это сработало. Я добавил экспорт 'model / request_invite.dart'; в dbapi.dart и может сгенерировать миграцию. Я начну использовать его в контроллере, чтобы мне не пришлось включать модель в dbapi.dart. - person deepti; 04.07.2018
comment
он даже работал с import 'model/datafile.dart'; - person Magillus; 15.04.2019

Как сказал Джо Конвей, мне пришлось импортировать подкласс ManagedObject в свой контроллер:

import 'package:my_project/model/my_model.dart';

После того, как работает

aqueduct db generate

создал правильный файл миграции. В конечном итоге я все равно собирался использовать управляемый объект в контроллере, но меня еще не было, и я хотел сначала сгенерировать файл миграции.

person Suragch    schedule 31.05.2019