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)
Другие вопросы по тегам