私は蒸気に慣れていません。私はこのチュートリアルに従っています:https://www.xplusz.com/how-to-do-basic-crud/しかし、私はpostgresqlデータベースの代わりにMySQLデータベースを使用しています。Fluent.EntityErrorエラー0
だから、これは私が持っているコードです: Patient.swift
import Foundation
import Vapor
import Fluent
final class Patient: Model {
var id: Node?
var firstName: String
var lastName: String
var exists: Bool = false
init(firstName: String, lastName: String) {
self.id = nil
self.firstName = firstName
self.lastName = lastName
}
init(node: Node, in context: Context) throws {
id = try node.extract("id")
firstName = try node.extract("first_name")
lastName = try node.extract("last_name")
}
func makeNode(context: Context) throws -> Node {
return try Node(node: [
"id": id,
"first_name": firstName,
"last_name": lastName
])
}
static func prepare(_ database: Database) throws {
try database.create("patients") { users in
users.id()
users.string("first_name")
users.string("last_name")
}
}
static func revert(_ database: Database) throws {
try database.delete("patients")
}
}
main.swift
import Vapor
import VaporMySQL
let drop = Droplet(
providers:[VaporMySQL.Provider.self]
)
drop.get { req in
return try drop.view.make("welcome", [
"message": drop.localization[req.lang, "welcome", "title"]
])
}
drop.get("version"){request in
if let db = drop.database?.driver as? MySQLDriver{
let version = try db.raw("SELECT version()")
return try JSON(node: version)
}else{
return "No db connection"
}
}
drop.post("patients") { request in
print(request.json)
var patient = try Patient(node: request.json)
try patient.save()
return patient
}
drop.get("patients"){request in
return try JSON(node: Patient.all().makeNode())
}
drop.resource("posts", PostController())
drop.run()
私はバージョンを実行すると、すべてが正常に動作します:
[
{
"version()": "5.7.14"
}
]
しかし、たとえば、投稿を実行したりリクエストを受け取った場合、エラーが表示されます。
このチュートリアルでは、まずデータベースにテーブルを作成することについては言及していませんが、準備機能の内容は正しいですか?他に何が間違っていますか?
mysql.json
{
"host": "localhost",
"user": "root",
"password": "",
"database": "development",
"port": "3306",
"encoding": "utf8"
}
first_nameとlast_nameに変更して同じエラーが発生しました – user2529173
ハードコードされた値で試しましたか? –
これは、 'first_name'を抽出しようとしている' init(node:Node ...) 'メソッドに最も関連していますが、JSON本体に' firstName'が含まれています。キーは正確に一致する必要があります。 – tanner0101