Не нужно использовать «классы классов» или «Новый» в наши дни. Используйте литералы объектов.
Прототип объекта уже является «классом». Когда вы определяете литерал объекта, он уже является экземпляром прототипа Object. Они также могут выступать в качестве прототипа другого объекта и т. Д.
const Person = {
name: '[Person.name]',
greeting: function() {
console.log( `My name is ${ this.name || '[Name not assigned]' }` );
}
};
// Person.greeting = function() {...} // or define outside the obj if you must
// Object.create version
const john = Object.create( Person );
john.name = 'John';
console.log( john.name ); // John
john.greeting(); // My name is John
// Define new greeting method
john.greeting = function() {
console.log( `Hi, my name is ${ this.name }` )
};
john.greeting(); // Hi, my name is John
// Object.assign version
const jane = Object.assign( Person, { name: 'Jane' } );
console.log( jane.name ); // Jane
// Original greeting
jane.greeting(); // My name is Jane
// Original Person obj is unaffected
console.log( Person.name ); // [Person.name]
console.log( Person.greeting() ); // My name is [Person.name]
Объектно-ориентированное на основе класса Языки, такие как Java и C ++, основаны на концепции двух разных сущностей: классов и экземпляров.
...
Язык, на основе прототипа, такой как JavaScript, не делайте этого различия: у него просто есть объекты. Язык, основанный на прототипе, имеет понятие прототипического объекта, объект, используемый в качестве шаблона, из которого можно получить начальные свойства для нового объекта. Любой объект может определять свои собственные свойства либо при его создании, либо во время выполнения. Кроме того, любой объект может быть связан как прототип для другого объекта, позволяя второму объекту совместно использовать свойства первого объекта
Чтобы решить эту проблему, вы должны избавиться от всех остатков SQLite из исходного проекта и написать свои маршруты в routes.swift
Ваша проблема в том, что в исходном шаблоне проекта есть кое-что из SQLite.
Начните с удаления зависимости fluent-sqlite
из файла Package.swift
и цели FluentSQLite
из любых зависимостей назначения. Затем запустите swift package update
(и vapor xcode
, если вы используете Xcode) в своем терминале.
Теперь, когда вы удалили зависимость FluentSQLite
из вашего проекта, вы должны быть в состоянии следовать ошибкам компилятора, чтобы исправить вашу проблему. Вот те, которые я нашел:
import FluentSQLite
import MySQL
должно быть:
import FluentMySQL
<час> try services.register(FluentSQLiteProvider())
try services.register(MySQLProvider())
должно быть
try services.register(FluentMySQLProvider())
<час> [1119 ] Удалите это, поскольку вы используете MySQL вместо SQLite:
// Configure a SQLite database
let sqlite = try SQLiteDatabase(storage: .memory)
/// Register the configured SQLite database to the database config.
var databases = DatabasesConfig()
databases.add(database: sqlite, as: .sqlite)
services.register(databases)
migrations.add(model: Todo.self, database: .sqlite)
Должно быть
migrations.add(model: Todo.self, database: .mysql)
Я думаю, что это охватывает все. Ваш маршрут /sql
должен сработать.