Vapor 2 Validation Valid-throws "Использование необъявленного типа Valid"
Я пытаюсь использовать Vapor 2 Valid Type, но компилятор только говорит: "Использовать необъявленный тип Valid".
Я прочитал: https://docs.vapor.codes/2.0/validation/package/ + https://docs.vapor.codes/2.0/validation/overview/
В моем моем Package.swift я определил
- /vapor/vapor.git
- /vapor/validation-provider.git
- /fluent-provider.git
как зависимости.
Если я попытаюсь использовать Valid<SomeValidator>
компилятор говорит: "Использование необъявленного типа Valid".
Использование import Validation
против import VaporValidation
не имеет значения.
У кого-нибудь есть идеи, как мне заставить Valid работать?
THX за вашу помощь.
Редактировать: я создал новый проект Vapor vapor new validtest --api
,
Отредактировал Package.swift:
import PackageDescription
let package = Package(
name: "validtest",
targets: [
Target(name: "App"),
Target(name: "Run", dependencies: ["App"]),
],
dependencies: [
.Package(url: "https://github.com/vapor/vapor.git", majorVersion: 2),
.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1),
.Package(url: "https://github.com/vapor/validation-provider.git", majorVersion: 1),
.Package(url: "https://github.com/vapor/fluent-provider.git", majorVersion: 1)
],
exclude: [
"Config",
"Database",
"Localization",
"Public",
"Resources",
]
)
Ран vapor fetch
а также vapor xcode
,
В Routes.swift из примера кода я попробовал это:
import Vapor
import FluentProvider
import Validation
// or and both imports are tested
import VaporValidation
extension Droplet {
func setupRoutes() throws {
get("info") { req in
let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated()
Независимо от того, какой импорт я использовал, компилятор всегда говорит: "Использование необъявленного типа Valid".
2 ответа
Вместо
let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated()
Испытания Vapor 2 использует
guard let input = req.data["input"]?.string else { throw SomeError }
try input.validated(by: OnlyAlphanumeric())
Если входная строка недопустима, ValidationError
будет брошен.
У меня такая же проблема. Это должно работать:
.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1)
...
import Validation
...
try EmailValidator().validate(email)