Используя mon goose (с Nest JS и Typescript), какой код наиболее эффективен для обновления документа? - PullRequest
0 голосов
/ 28 марта 2020

В целях развития моего понимания языка машинописи, в то же время изучая Nest JS и mon goose Я попытался провести рефакторинг метода updateProduct из этого репо из этого ...

async updateProduct(
  productId: string,
  title: string,
  desc: string,
  price: number,
) {
  const updatedProduct = await this.findProduct(productId);
  if (title) {
    updatedProduct.title = title;
  }
  if (desc) {
    updatedProduct.description = desc;
  }
  if (price) {
    updatedProduct.price = price;
  }
  updatedProduct.save();
}

.. к этому ..

async updateProduct(
  product: Product
) {
  return (<Product>{
    ...await this.findProduct(product.id),
    ...product,
  }).save();
}

Однако я получаю исключение:

TypeError: Object.assign (...). save - это не функция

Что здесь не так?

Кажется, мне нужен объект модели. Цель состояла в том, чтобы сделать как можно более краткий вызов для обновления одного объекта в моей коллекции mon go (atlas). В конце концов я пришел к следующему:

async updateProduct2(product: Product) {
  return await this.productModel.updateOne({_id: product.id}, product);
}

Тем не менее, для моей цели изучения Typescript мне любопытны другие варианты, связанные с модификаторами распространения объектов. Что скажете вы?

...