Есть две функции javascript/typescript(Deno). Первая получает инфо по пользователю по id, а вторая удаляет пользователя по id.
Во вторую функцию я добавил две строчки, для реализации определенной бизнес логики. Строчки скопировал из рабочей функции getUser
. Дебагер ругается на вторую строку скопированного текста. Не могу понять, что не так с проблемной строкой. Текст ошибки приведен ниже.
const user: (UserSchema | null) = await User.findOne({ _id: ObjectId(id) });
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
Рабочая функция
/**
* Get single user service
* @param id
* @returns Promise<UserSchema | Error> Returns user document
*/
public static async getUser(id: string): Promise<UserStructure | Error> {
const user: (UserSchema | null) = await User.findOne({ _id: ObjectId(id) });
if (!user) {
log.error("User not found");
return throwError({
status: Status.NotFound,
name: "NotFound",
path: "user",
param: "user",
message: `user not found`,
type: "NotFound",
});
}
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
return { id, name, email, role, isDisabled, createdAt, updatedAt };
}
Функция на которую дебагер выдает сообщение об ошибке.
/**
* Remove user service
* @param id
* @returns Promise<number | Error Returns deleted count
*/
public static async removeUser(id: string): Promise<number | Error> {
const user: (UserSchema | null) = await User.findOne({ _id: ObjectId(id) });
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
const deleteCount: number = await User.deleteOne({ _id: ObjectId(id) });
if (deleteCount) {
const updatedAt = new Date();
// const user_history: ObjectId = await UserHistory.insertOne(
// {_id: _id, name: name, email: email, role: role, isDisabled: isDisabled, createdAt: createdAt, updatedAt: updatedAt, doc_version: doc_version + 1},
// );
}
else {
return throwError({
status: Status.BadRequest,
name: "BadRequest",
path: "user",
param: "user",
message: `Could not delete user`,
type: "BadRequest",
});
}
return deleteCount;
}
}
Текст ошибки
C:\Users\yuriy\.deno\bin\deno.exe run --inspect-brk=127.0.0.1:9229 --allow-all --unstable .\app.ts
Debugger listening on ws://127.0.0.1:9229/ws/95e7c5ac-803a-409b-a0c9-028fa3f965e3
Check file:///C:/Users/yuriy/source/repos/deno_rest/app.ts
error: TS2339 [ERROR]: Property 'name' does not exist on type 'UserSchema | null'.
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
~~~~
at file:///C:/Users/yuriy/source/repos/deno_rest/services/user.service.ts:124:13
TS2339 [ERROR]: Property 'email' does not exist on type 'UserSchema | null'.
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
~~~~~
at file:///C:/Users/yuriy/source/repos/deno_rest/services/user.service.ts:124:19
TS2339 [ERROR]: Property 'role' does not exist on type 'UserSchema | null'.
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
~~~~
at file:///C:/Users/yuriy/source/repos/deno_rest/services/user.service.ts:124:26
TS2339 [ERROR]: Property 'isDisabled' does not exist on type 'UserSchema | null'.
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
~~~~~~~~~~
at file:///C:/Users/yuriy/source/repos/deno_rest/services/user.service.ts:124:32
TS2339 [ERROR]: Property 'createdAt' does not exist on type 'UserSchema | null'.
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
~~~~~~~~~
at file:///C:/Users/yuriy/source/repos/deno_rest/services/user.service.ts:124:44
TS2339 [ERROR]: Property 'updatedAt' does not exist on type 'UserSchema | null'.
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
~~~~~~~~~
at file:///C:/Users/yuriy/source/repos/deno_rest/services/user.service.ts:124:55
Found 6 errors.
Требуется добавить проверку if (!user) перед присвоением.
/**
* Remove user service
* @param id
* @returns Promise<number | Error Returns deleted count
*/
public static async removeUser(id: string): Promise<number | Error> {
const user: (UserSchema | null) = await User.findOne({ _id: ObjectId(id) });
if (!user) {
log.error("User not found");
return throwError({
status: Status.NotFound,
name: "NotFound",
path: "user",
param: "user",
message: `user not found`,
type: "NotFound",
});
}
const { name, email, role, isDisabled, createdAt, updatedAt } = user;
const deleteCount: number = await User.deleteOne({ _id: ObjectId(id) });
if (deleteCount) {
const updatedAt = new Date();
// const user_history: ObjectId = await UserHistory.insertOne(
// {_id: _id, name: name, email: email, role: role, isDisabled: isDisabled, createdAt: createdAt, updatedAt: updatedAt, doc_version: doc_version + 1},
// );
}
else {
return throwError({
status: Status.BadRequest,
name: "BadRequest",
path: "user",
param: "user",
message: `Could not delete user`,
type: "BadRequest",
});
}
return deleteCount;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть сайт KinoFinderПри первом запуске (или ctrl + F5) В консоли такая ошибка:
Есть div с шириной 100% и высотой 100vh и заданной ему фоновой картинкой в качестве background; также заданы background-size: cover и filter: grayscale(100%)Нужно расположить...
Всем приветесть кнопка "Лайк" при клике которой счетчик должен увеличиваться на 1