2017-06-26 4 views
4

Vapor 2 Valid Typeを使用しようとしましたが、コンパイラは "宣言されていない型を有効にする"Vapor 2 Validation Valid-Typeは "宣言されていない型を有効にする"を有効にします

は私が読んでいた:私の私のPackage.swiftでhttps://docs.vapor.codes/2.0/validation/package/ + https://docs.vapor.codes/2.0/validation/overview/

私は

  • /vapor/validation-provider.git /vapor/vapor.gitを定義している
  • /fluent-provider.git

として依存します。

Valid<SomeValidator>を使用しようとすると、コンパイラは「宣言されていない型を有効にする」と述べています。

import Validationimport VaporValidationの使用に違いはありません。

どのように私はどのように有効にすることができますか考えている?

THXあなたの助けになります。

編集: 新しい蒸気プロジェクト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() 

私が使用したインポートどんなに、コンパイラは常に言う:「宣言されていないタイプの使用が有効です」。

+0

FYI: 'VaporValidation'はValidationProviderリリースv1.2.0(2017年7月)を提供するものと一致するように' ValidationProvider'に名前が変更されました。 'VaporValidation'は推奨されていません。したがって、import VaporValidationはv1.2.0以上では 'import ValidationProvider'になります。あなたの答えは –

答えて

2

代わり

let input: Valid<OnlyAlphanumeric> = try req.data["input"].validated() 

蒸気2の検証は

guard let input = req.data["input"]?.string else { throw SomeError } 
try input.validated(by: OnlyAlphanumeric()) 

入力文字列が有効でない場合、ValidationErrorがスローされますを使用しています。

+0

THX、この解決策は私のために働く。なぜ私はコード補完を見たことがないのか分からない... –

0

私は同じ問題がありました。これは動作するはずです:

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

... 

import Validation 

... 

try EmailValidator().validate(email) 
+0

THXです。しかし、データモデルに無効​​な値を格納できないように、Valid型を使用しようとしています。 –

関連する問題