Vapor 2验证有效类型抛出"使用未声明类型有效"

时间:2017-06-26 15:01:56

标签: validation swift3 vapor

我尝试使用Vapor 2 Valid Type,但编译器只说:"使用未声明的类型有效"。

我读过: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>编译器说:&#34;使用未声明的类型有效&#34;。

使用import Validation vs import VaporValidation没有任何区别。

是否有人知道我如何才能获得有效工作?

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 fetchvapor 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()

无论我使用哪种导入,编译器总是说:&#34;使用未声明的类型有效&#34;。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我遇到了同样的问题。这应该有效:

.Package(url: "https://github.com/vapor/validation.git", majorVersion: 1)

...

import Validation

...

try EmailValidator().validate(email)