Skip to content

Commit

Permalink
add switch select
Browse files Browse the repository at this point in the history
  • Loading branch information
罔思 committed Jul 30, 2018
1 parent 800924f commit 6042de2
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/entity-manager/MongoEntityManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ export class MongoEntityManager extends EntityManager {
const query = this.convertFindManyOptionsOrConditionsToMongodbQuery(optionsOrConditions);
const cursor = await this.createEntityCursor(entityClassOrName, query);
if (FindOptionsUtils.isFindManyOptions(optionsOrConditions)) {
if (optionsOrConditions.select)
cursor.project(this.convertFindOptionsSelectToProjectCriteria(optionsOrConditions.select));
if (optionsOrConditions.skip)
cursor.skip(optionsOrConditions.skip);
if (optionsOrConditions.take)
Expand All @@ -109,12 +111,15 @@ export class MongoEntityManager extends EntityManager {
const query = this.convertFindManyOptionsOrConditionsToMongodbQuery(optionsOrConditions);
const cursor = await this.createEntityCursor(entityClassOrName, query);
if (FindOptionsUtils.isFindManyOptions(optionsOrConditions)) {
if (optionsOrConditions.select)
cursor.project(this.convertFindOptionsSelectToProjectCriteria(optionsOrConditions.select));
if (optionsOrConditions.skip)
cursor.skip(optionsOrConditions.skip);
if (optionsOrConditions.take)
cursor.limit(optionsOrConditions.take);
if (optionsOrConditions.order)
cursor.sort(this.convertFindOptionsOrderToOrderCriteria(optionsOrConditions.order));

}
const [results, count] = await Promise.all<any>([
cursor.toArray(),
Expand All @@ -140,6 +145,8 @@ export class MongoEntityManager extends EntityManager {

const cursor = await this.createEntityCursor(entityClassOrName, query);
if (FindOptionsUtils.isFindManyOptions(optionsOrConditions)) {
if (optionsOrConditions.select)
cursor.project(this.convertFindOptionsSelectToProjectCriteria(optionsOrConditions.select));
if (optionsOrConditions.skip)
cursor.skip(optionsOrConditions.skip);
if (optionsOrConditions.take)
Expand All @@ -164,6 +171,8 @@ export class MongoEntityManager extends EntityManager {
}
const cursor = await this.createEntityCursor(entityClassOrName, query);
if (FindOptionsUtils.isFindOneOptions(optionsOrConditions)) {
if (optionsOrConditions.select)
cursor.project(this.convertFindOptionsSelectToProjectCriteria(optionsOrConditions.select));
if (optionsOrConditions.order)
cursor.sort(this.convertFindOptionsOrderToOrderCriteria(optionsOrConditions.order));
}
Expand Down Expand Up @@ -597,6 +606,16 @@ export class MongoEntityManager extends EntityManager {
}, {} as ObjectLiteral);
}

/**
* Converts FindOptions into mongodb select by criteria.
*/
protected convertFindOptionsSelectToProjectCriteria(selects: (keyof any)[]) {
return selects.reduce((projectCriteria, key) => {
projectCriteria[key] = 1;
return projectCriteria;
}, {} as any);
}

/**
* Ensures given id is an id for query.
*/
Expand Down

0 comments on commit 6042de2

Please sign in to comment.