#javascript #node.js #typescript #mongodb #mongoose
Вопрос:
Я пытаюсь получить список из своего mongodb, передавая условие, но всякий раз, когда я печатаю свое условие, я получаю неопределенное.
async list(query: PaginationQuery): Promise<any> {
const page = Number(query.page) - 1 || 0;
let limit = Number(query.limit) || 20;
const offset = page * limit;
const sort = query.sort || 'createdAt';
const archived = this.convertArchived(query.archived);
const conditions = {
...query.conditions,
...(!archived
? { deletedAt: undefined }
: { deletedAt: { $ne: undefined } })
};
console.log(`HELP MEEE xx ${JSON.stringify(query.conditions)}`)
const data = await this.model
.find(conditions)
.select(query.projections)
.skip(offset)
.limit(limit)
.sort(sort);
const totalDocuments = await this.model.countDocuments(conditions);
const pageCount = Math.ceil(totalDocuments / limit);
const pagination = {
page: page 1,
limit,
sortedBy: sort,
pageCount
};
return { data, pagination };
}
Это мое репо
public async listAll() {
const conditions = { role: 'surf' };
const data = { condition: conditions, page: 1, limit: 10 };
const all = await this.list(data);
return all
}
Это не учитывает условие и просто возвращает всех пользователей.
Мой интерфейс запроса на разбиение на страницы выглядит следующим образом
export interface PaginationQuery {
archived?: boolean | string;
conditions?: any;
page?: number;
limit?: number;
projections?: any;
sort?: string | object;
}
Комментарии:
1. Я думаю, что это проблема с опечаткой, должно быть : const data = { условия: условия, страница: 1, ограничение: 10 };