我尝试使用Vapor 2 Valid Type,但编译器只说:"使用未声明的类型有效"。
我读过:https://docs.vapor.codes/2.0/validation/package/ + https://docs.vapor.codes/2.0/validation/overview/
在我的Package.swift中,我定义了
作为依赖。
如果我尝试使用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 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()
无论我使用哪种导入,编译器总是说:&#34;使用未声明的类型有效&#34;。
答案 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)