Я хочу получить данные конкретного человека из mongodb на основе значений имени пользователя и пароля, но я получил все данные db вместо конкретного человека, которого я передал в имени пользователя и пароле.
Вот код DTO:
import {IsString, IsInt,IsEmail,IsNotEmpty, IsNumberString} from 'class-validator';
export class LoginDto {
@IsEmail()
username: string;
@IsNumberString()
password: string;
}
Вот код услуги:
async loginsys(credentials: LoginDto): Promise<any> {
const cred = await this.student.find({ credentials }).exec();
return cred;
}
Вот код контроллера:
@Post('login')
log(@Body('credentials') credentials: LoginDto): any {
return this.crudservice.loginsys(credentials);
}
1 ответ
Если вы хотите получить только один объект, вы можете использовать findOne
вместо find
:
return this.student.findOne(credentials)
find
должен работать, если вы передадите свой запрос where
:
find({where: credentials})`
exec()
не требуется.
findOne
возвращает только одну сущность. Как выглядит ваша схема/модель?
findOne(credentials)
, см. мое редактирование. Проблема в том, что вы на самом деле запрашиваете поле credentials
, потому что {credentials}
является сокращением для {credentials: credentials}
.
Похожие вопросы
Новые вопросы
node.js
Node.js — это основанная на событиях, неблокирующая, асинхронная среда выполнения ввода-вывода, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на стороне клиента, так и на стороне сервера и, следовательно, выигрывают от возможности повторного использования кода и отсутствия переключения контекста.