Typescriptを使用するときに、Meteor 1.3でスキーマ検証を使用するパッケージはありますか?流星ガイド(aldeed:simple-schema)の推奨パッケージには定義ファイルがないようです。流行の中でのtypescriptでのmongoスキーマ検証の使い方は?
代わりに何を使用するか、Typescriptに組み込みの方法がありますか?
Typescriptを使用するときに、Meteor 1.3でスキーマ検証を使用するパッケージはありますか?流星ガイド(aldeed:simple-schema)の推奨パッケージには定義ファイルがないようです。流行の中でのtypescriptでのmongoスキーマ検証の使い方は?
代わりに何を使用するか、Typescriptに組み込みの方法がありますか?
Meteor 1.3以上のTypescriptで使用するのに最適なパッケージはaldeed:node-simple-schemaです。ドキュメントから
:
SimpleSchema
SimpleSchemaの歴史が最初に2013年半ばでの流星パッケージとしてリリースされました。 バージョン1.0は2014年9月にリリースされました.2016年半ば、バージョン2.0 がMeteor、NodeJS、 または静的ブラウザアプリケーションで使用できるNPMパッケージとしてリリースされました。 simpleschemaとsimpleschemaという名前の他のNPMのパッケージがありますSIMPL-スキーマを
インストール
NPMをインストールします。 パッケージを必ずインストールしてください。 「シンプル」には「e」はありません。
だから、活字体で正しいインポートは次のようになります。
import SimpleSchema from 'simpl-schema';
しかし、あなたの質問には、具体的タイピングについてです。 Meteorの入力を開始する場所は、https://github.com/meteor-typescript/meteor-typescript-libs/tree/master/definitionsにあるMeteorの入力ライブラリです。
collection2とsimple-schemaの定義がありますが、の古いシンプルスキーマです。彼らはあなたに良い出発点を与え、あなたは戻ってコレクション2のものをちょっと拾いたいと思うでしょう。最終的には、約1週間の検索の後/ etc。私は自分のセットを、Meteor Gitのオリジナルに基づいて書きました。うまくいけば、たとえ彼らがあなたに少し遅れていても、将来の検索人にとっては役立ちます。
declare module "simpl-schema" {
export class ValidationContext {
constructor(ss: any);
addValidationErrors(errors: any): void;
clean(...args: any[]): any;
getErrorForKey(key: any, ...args: any[]): any;
isValid(): any;
keyErrorMessage(key: any, ...args: any[]): any;
keyIsInvalid(key: any, ...args: any[]): any;
reset(): void;
setValidationErrors(errors: any): void;
validate(obj: any, ...args: any[]): any;
validationErrors(): any;
}
interface SchemaDefinition {
type: any;
label?: string | Function;
optional?: boolean | Function;
min?: number | boolean | Date | Function;
max?: number | boolean | Date | Function;
minCount?: number | Function;
maxCount?: number | Function;
allowedValues?: any[] | Function;
decimal?: boolean;
exclusiveMax?: boolean;
exclusiveMin?: boolean;
regEx?: RegExp | RegExp[];
custom?: Function;
blackbox?: boolean;
autoValue?: Function;
defaultValue?: any;
trim?: boolean;
}
interface CleanOption {
filter?: boolean;
autoConvert?: boolean;
removeEmptyStrings?: boolean;
trimStrings?: boolean;
getAutoValues?: boolean;
isModifier?: boolean;
extendAutoValueContext?: boolean;
}
interface SimpleSchemaStatic {
new(schema: {[key: string]: SchemaDefinition} | any[]): SimpleSchemaStatic;
debug: boolean;
namedContext(name?: string): SimpleSchemaValidationContextStatic;
addValidator(validator: Function): any;
pick(...fields: string[]): SimpleSchemaStatic;
omit(...fields: string[]): SimpleSchemaStatic;
clean(doc: any, options?: CleanOption): any;
schema(key?: string): SchemaDefinition | SchemaDefinition[];
getDefinition(key: string, propList?: any, functionContext?: any): any;
keyIsInBlackBox(key: string): boolean;
labels(labels: {[key: string]: string}): void;
label(key: any): any;
Integer: RegExp;
messages(messages: any): void;
messageForError(type: any, key: any, def: any, value: any): string;
allowsKey(key: any): string;
newContext(): SimpleSchemaValidationContextStatic;
objectKeys(keyPrefix: any): any[];
validate(obj: any, options?: ValidationOption): void;
validator(options: ValidationOption): Function;
RegEx: {
Email: RegExp;
EmailWithTLD: RegExp;
Domain: RegExp;
WeakDomain: RegExp;
IP: RegExp;
IPv4: RegExp;
IPv6: RegExp;
Url: RegExp;
Id: RegExp;
ZipCode: RegExp;
Phone: RegExp;
};
}
interface ValidationOption {
modifier?: boolean;
upsert?: boolean;
clean?: boolean;
filter?: boolean;
upsertextendedCustomContext?: boolean;
}
interface SimpleSchemaValidationContextStatic {
validate(obj: any, options?: ValidationOption): boolean;
validateOne(doc: any, keyName: string, options?: ValidationOption): boolean;
resetValidation(): void;
isValid(): boolean;
invalidKeys(): { name: string; type: string; value?: any; }[];
addInvalidKeys(errors: { name: string, type: string; }[]): void;
keyIsInvalid(name: any): boolean;
keyErrorMessage(name: any): string;
getErrorObject(): any;
}
interface MongoObjectStatic {
forEachNode(func: Function, options?: {endPointsOnly: boolean;}): void;
getValueForPosition(position: string): any;
setValueForPosition(position: string, value: any): void;
removeValueForPosition(position: string): void;
getKeyForPosition(position: string): any;
getGenericKeyForPosition(position: string): any;
getInfoForKey(key: string): any;
getPositionForKey(key: string): string;
getPositionsForGenericKey(key: string): string[];
getValueForKey(key: string): any;
addKey(key: string, val: any, op: string): any;
removeGenericKeys(keys: string[]): void;
removeGenericKey(key: string): void;
removeKey(key: string): void;
removeKeys(keys: string[]): void;
filterGenericKeys(test: Function): void;
setValueForKey(key: string, val: any): void;
setValueForGenericKey(key: string, val: any): void;
getObject(): any;
getFlatObject(options?: {keepArrays?: boolean}): any;
affectsKey(key: string): any;
affectsGenericKey(key: string): any;
affectsGenericKeyImplicit(key: string): any;
}
export const SimpleSchema: SimpleSchemaStatic;
export const SimpleSchemaValidationContext: SimpleSchemaValidationContextStatic;
export const MongoObject: MongoObjectStatic;
export interface SimpleSchema {
debug: boolean;
addValidator(validator: Function): any;
extendOptions(options: {[key: string]: any}): void;
messages(messages: any): void;
RegEx: {
Email: RegExp;
Domain: RegExp;
WeakDomain: RegExp;
IP: RegExp;
IPv4: RegExp;
IPv6: RegExp;
Url: RegExp;
Id: RegExp;
ZipCode: RegExp;
Phone: RegExp;
};
}
export interface MongoObject {
expandKey(val: any, key: string, obj: any): void;
}
export default SimpleSchema;
}
これは、2011年4月23日時点の最新版に基づいています。ボーナスポイントのために
は、ここで設定を使用すると、次を探していることになります検証法、のためです:流星の世界でスキーマと検証に乗り出しています探索のために
declare module "meteor/mdg:validated-method" {
declare class ValidatedMethod<T> extends MeteorValidatedMethod.ValidatedMethod<T> { }
declare module MeteorValidatedMethod {
export class ValidatedMethod<T> {
constructor(options: ValidatedMethodOptions<T>);
call(options?: T, cb?: (err, res)=> void): void;
}
interface ValidatedMethodOptions<T> {
name: string;
mixins?: Function[];
validate: any;
applyOptions: any;
run(opts: T);
}
}
}
、ここではいくつかあります検証パッケージを完成させるために役立つより多くのモジュール:
aldeed:collection2-core 2.0.0 Core package for aldeed:collection2
aldeed:schema-deny 2.0.0 Deny inserting or updating certain properties through schema options
aldeed:schema-index 2.0.0 Control some MongoDB indexing with schema options
mdg:validated-method 1.1.0 A simple wrapper for Meteor.methods
mdg:validation-error 0.5.1 A standard validation error to be used by form/method/validation packages