2016-10-02 2 views
3

Я сделал модель для пользователей, которые ищут так:Использование Монго DB с Vapor и Fluent

import Vapor 
import Fluent 
import Foundation 

final class User: Model { 

var id: Node? 
var username: String 
var name : String 
var surename : String 
var password : String 
var credit : String 
var isBlocked : String 
var isAdmin : String 

init(username: String, name: String, surename: String, password: String, credit: String, isBlocked: String, isAdmin: String) { 
    self.id = UUID().uuidString.makeNode() 
    self.username = username 
    self.name = name 
    self.surename = surename 
    self.password = password 
    self.credit = credit 
    self.isBlocked = isBlocked 
    self.isAdmin = isAdmin 
} 

init(node: Node, in context: Context) throws { 
    id = try node.extract("_id") 
    username = try node.extract("username") 
    name = try node.extract("name") 
    surename = try node.extract("surename") 
    password = try node.extract("password") 
    credit = try node.extract("credit") 
    isBlocked = try node.extract("isBlocked") 
    isAdmin = try node.extract("isAdmin") 

} 

func makeNode(context: Context) throws -> Node { 
    return try Node(node: [ 
     "_id": id, 
     "username": username, 
     "name": name, 
     "surename": surename, 
     "password" : password, 
     "credit" : credit, 
     "isBlocked" : isBlocked, 
     "isAdmin" : isAdmin 
    ]) 
} 
} 

//extension User { 
// /** 
//  This will automatically fetch from database, using example here to load 
//  automatically for example. Remove on real models. 
// */ 
// public convenience init?(from string: String) throws { 
//  self.init(content: string) 
// } 
//} 

extension User: Preparation { 
static func prepare(_ database: Database) throws { 
    try database.create("users") { users in 
     users.id() 
     users.string("username") 
     users.string("name") 
     users.string("surename") 
     users.string("password") 
     users.string("credit") 
     users.string("isBlocked") 
     users.string("isAdmin") 
    } 
} 

static func revert(_ database: Database) throws { 
    // 
} 
} 

Я пытаюсь создать новый пользователь с этим:

var user = User(username: "Test", name: "Name", surename: "zuname", password: "1234", credit: "0.00", isBlocked: "false", isAdmin: "true") 

    try user.save() 
    print(user.id) // prints the new id 

я могу построить и пару запуска , когда я вхожу в маршрут, возможно, это может быть выполнено. Я получил эту ошибку:

Uncaught Error: EntityError.noDatabase. Use middleware to catch this error and provide a better response. Otherwise, a 500 error page will be returned in the production environment.

Может кто-нибудь мне помочь?

Где я могу найти полную документацию для Fluent with mongo and Vapor?

Большое спасибо!

+0

Эй, Марсель, вы подготовили свою сущность в своей капле? – Logan

ответ

9

EntityError.noDatabase бывает, когда модель не знает, какую базу данных использовать.

У вас есть два способа исправить это.

Явно установить базу данных для типа User.

User.database = myDatabase 

Или пройти User типа в качестве подготовки к капельке.

let drop = Droplet(preparations: [User.self]) 
Смежные вопросы