Vapor db无效的SQL关系不存在Fluent尝试从错误的数据库名称中进行SELECT

时间:2017-05-22 01:20:11

标签: postgresql vapor

当我在准备后查看我的PostreSQL服务器时,我看到与名称“blogdetails”的关系,但是当我尝试做的时候

try BlogDetails.all()

我总是得到错误“invalidSQL(”错误关系\“blogdetailss \”不存在“拼写这样结束两个S对我来说没有意义,有没有人知道我可能做错了什么,我是尝试dropdb和createdb再次和恢复和准备:( 这是来自我的main.swift

try? drop.addProvider(VaporPostgreSQL.Provider.self)
drop.preparations = [BlogComment.self, BlogDetails.self]

do {
    try drop.database?.prepare([BlogComment.self, BlogDetails.self])
    print("Database prepared")
} catch {
     print("Prepare failed: \(error.localizedDescription)")
}

这是我的模特

struct BlogDetails: Model {

var id: Node?
var exists: Bool = false

let title: String
let author: String
let brief: String
let dateString: String

fileprivate static let entityName = "blogdetails"

init(id: Node? = nil, title: String, author: String, brief: String, dateString: String) {
    self.id = id
    self.title = title
    self.author = author
    self.brief = brief
    self.dateString = dateString
}

init(node: Node, in context: Context) throws {
    self.id = try node.extract(Keys.id)
    self.title = try node.extract(Keys.title)
    self.author = try node.extract(Keys.author)
    self.brief = try node.extract(Keys.brief)
    self.dateString = try node.extract(Keys.dateString)
}

func makeNode(context: Context) throws -> Node {
    return try Node(node: [
        Keys.id: id,
        Keys.title: title,
        Keys.author: author,
        Keys.brief: brief,
        Keys.dateString: dateString
    ])
}
}

extension BlogDetails: Preparation {
    static func prepare(_ database: Database) throws {
        try database.create(BlogDetails.entityName) {  in
            .id()
            .string(Keys.title)
            .string(Keys.author)
            .string(Keys.brief)
            .string(Keys.dateString)
        }
    }

    static func revert(_ database: Database) throws {
        try database.delete(BlogDetails.entityName)
    }
}

extension BlogDetails {
    struct Keys {
        static let id = "id"
        static let title = "title"
        static let author = "author"
        static let brief = "brief"
        static let dateString = "date_string"
    }
}

1 个答案:

答案 0 :(得分:1)

查询的实体名称取自import datetime d="09012010" mm=d[:2] dd=d[2:4] yr=d[4:] date = datetime.date(day=dd, month=mm, year=yr)

在您的班级中覆盖此内容的默认值。

即。而不是

static var entity: String { get }

使用

fileprivate static let entityName = "blogdetails"