Как конкатить строку и нужно передать в updateOne в mongoose - PullRequest
0 голосов
/ 17 апреля 2020

Мне нужно обновить статус, поэтому в этом коде у меня есть жесткий код для имени ключа { user_status_is_active: isActivate },. но я должен пройти это динамически. я пытался как { $ {this.entityName} _status_is_active : isActivate }, но это не работает. Может кто-нибудь сказать мне, как этого добиться?

// dynamici c значение приходит из константы схемы
this.entityName

 updateStatus = async (request: Request, response: Response, isActivate: boolean) => {
    try {
      const dbResponse = await this.model.updateOne(
        { _id: request.params.id },
        { user_status_is_active: isActivate },
        { runValidators: true },
      );
      if ('nModified' in dbResponse && dbResponse.nModified! < 1) {
        response.send(`${this.entityName} not modified.`);
      } else {
        response.send(`${this.entityName} ${isActivate ? 'activated' : 'deactivated'} successfully.`);
      }
    } catch (err) {
      response.send(err.message);
    }
  };

1 Ответ

1 голос
/ 17 апреля 2020

Вы можете использовать Имя вычисляемого свойства , чтобы сделать это. Что-то вроде:

const dbResponse = await this.model.updateOne(
    { _id: request.params.id },
    { [`${this.entityName}_status_is_active`]: isActivate },
    { runValidators: true },
);
...