当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript MongoProvider.find方法代码示例

本文整理汇总了TypeScript中frost-component.MongoProvider.find方法的典型用法代码示例。如果您正苦于以下问题:TypeScript MongoProvider.find方法的具体用法?TypeScript MongoProvider.find怎么用?TypeScript MongoProvider.find使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在frost-component.MongoProvider的用法示例。


在下文中一共展示了MongoProvider.find方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: BearerStrategy

	passport.use('accessToken', new BearerStrategy(async (accessToken, done) => {
		try {
			const tokenDocRaw: ITokenDocument = await db.find('api.tokens', { accessToken });
			if (!tokenDocRaw) {
				done(null, false);
				return;
			}
			const tokenDoc = new TokenDocument(tokenDocRaw);

			const userDocRaw: IUserDocument = await db.find('api.users', { _id: tokenDocRaw.userId });
			if (!userDocRaw) {
				done(null, false);
				return;
			}
			const userDoc = new UserDocument(userDocRaw);

			const appDocRaw: IAppDocument = await db.find('api.apps', { _id: tokenDocRaw.appId });
			if (!appDocRaw) {
				done(null, false);
				return;
			}
			const appDoc = new AppDocument(appDocRaw);
			await appDoc.populate(db);
			done(null, userDoc, { app: appDoc, token: tokenDoc } as any);
		}
		catch (err) {
			done(err);
		}
	}));
开发者ID:Frost-Dev,项目名称:Frost,代码行数:29,代码来源:accessTokenStrategy.ts

示例2: function

/**
 * 保存されているデータフォーマットを確認します。
 *
 * APIのバージョンアップによって保存されるデータの構造が変更される場合があります。
 * 「データフォーマット」は、正常に初期化・データ移行するために必要な識別子です。
*/
export default async function(db: MongoProvider, currentVersion: number): Promise<DataFormatState> {
	const dataFormat = await db.find('meta', { type: 'dataFormat' });

	let docCount = 0;
	docCount += await db.count('api.users', {});
	docCount += await db.count('api.apps', {});
	docCount += await db.count('api.tokens', {});
	docCount += await db.count('api.userRelations', {});
	docCount += await db.count('api.postings', {});
	docCount += await db.count('api.storageFiles', {});


	// データフォーマットが保存されていないとき
	if (!dataFormat) {
		if (docCount == 0) {
			return DataFormatState.needInitialization;
		}
		else {
			return DataFormatState.needMigration;
		}
	}

	// データフォーマットが一致しているとき
	if (dataFormat.value === currentVersion) {
		return DataFormatState.ready;
	}

	// データフォーマットが期待したものであるとき
	if (dataFormat.value < currentVersion) {
		return DataFormatState.needMigration;
	}
	else {
		return DataFormatState.unknown;
	}
}
开发者ID:Frost-Dev,项目名称:Frost,代码行数:41,代码来源:getDataFormatState.ts

示例3: async

	menu.add('generate or get token for authorization host', () => (dataFormatState == DataFormatState.ready), async (ctx) => {
		const rootUser = await db.find('api.users', { root: true });
		let rootApp = await db.find('api.apps', { root: true });
		if (rootApp) {
			let hostToken = await db.find('api.tokens', { host: true });

			if (!hostToken) {
				const scopes = config.hostToken.scopes;

				hostToken = await tokenService.create(rootApp, rootUser, scopes, true);
				log('host token created:', hostToken);
			}
			else {
				log('host token found:', hostToken);
			}
		}

		await refreshMenu();
	});
开发者ID:Frost-Dev,项目名称:Frost,代码行数:19,代码来源:setupMenu.ts

示例4: find

	async find(appId: string | ObjectId, userId: string | ObjectId, scopes: string[]): Promise<TokenDocument | null> {
		const scopesQuery: any = { $size: scopes.length };
		// NOTE: 空の配列を$allに指定すると検索にヒットしなくなるので、空のときは$allを指定しない
		if (scopes.length != 0) {
			scopesQuery.$all = scopes;
		}

		const tokenDocRaw = await this.db.find('api.tokens', {
			appId: MongoProvider.buildId(appId),
			userId: MongoProvider.buildId(userId),
			scopes: scopesQuery
		});

		return tokenDocRaw ? new TokenDocument(tokenDocRaw) : null;
	}
开发者ID:Frost-Dev,项目名称:Frost,代码行数:15,代码来源:TokenService.ts

示例5: getRelation

	async getRelation(sourceUserId: string | ObjectId, targetUserId: string | ObjectId): Promise<IUserRelation> {
		const docRaw: IUserRelationDocument = await this.db.find('api.userRelations', {
			sourceUserId: sourceUserId,
			targetUserId: targetUserId
		});

		if (!docRaw) {
			return {
				sourceUserId: MongoProvider.buildId(sourceUserId).toHexString(),
				targetUserId: MongoProvider.buildId(targetUserId).toHexString(),
				status: 'notFollowing'
			};
		}

		const userRelationDoc = new UserRelationDocument(docRaw);
		const userRelation = await userRelationDoc.pack(this.db);

		return userRelation;
	}
开发者ID:Frost-Dev,项目名称:Frost,代码行数:19,代码来源:UserRelationService.ts

示例6: findByScreenName

	async findByScreenName(screenName: string): Promise<UserDocument | null> {
		// find (ignore case)
		const rawDocument: IUserDocument | null = await this.db.find('api.users', { screenName: new RegExp(`^${screenName}$`, 'i') });

		return rawDocument ? new UserDocument(rawDocument) : null;
	}
开发者ID:Frost-Dev,项目名称:Frost,代码行数:6,代码来源:UserService.ts

示例7: findByAccessToken

	async findByAccessToken(accessToken: string): Promise<TokenDocument | null> {
		const tokenDocRaw = await this.db.find('api.tokens', { accessToken });

		return tokenDocRaw ? new TokenDocument(tokenDocRaw) : null;
	}
开发者ID:Frost-Dev,项目名称:Frost,代码行数:5,代码来源:TokenService.ts


注:本文中的frost-component.MongoProvider.find方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。