Не получаю _id из новой записи

#angularjs #mongoose #save

#angularjs #мангуст #Сохранить

Вопрос:

У меня есть API, использующий node, express и mongoose. Когда я вызываю API с помощью Postman, возвращается значение _id в модели. Когда я вызываю API, используя веб-приложение, созданное на angularjs и ionic, _id равен нулю. Запись сохраняется в обоих случаях.

Я попробовал установить заголовки в службе angularjs. Если извлекается вся запись, идентификаторы возвращаются. Я попытался установить и удалить _id из модели mongoose и модели angular

 // api method 
public save = async (req:Request, res:Response): Promise<any> => {
        let newDfr = new DfrModel(req.body);

        try {
            const insertDFR = await newDfr.save({ validateBeforeSave: false}); 

            if (!insertDFR) {
                return res.status(404).send({
                    success: false,
                    message: 'Error Saving DFR',
                    data: null
                  });
            }
            console.log (newDfr);
            res.status(200).send({
                success: true,
                data: insertDFR
              });

        } catch (err) {
            res.status(500).send({
                success: false,
                message: err.toString(),
                data: null
            });
        }
    }


// Service Method on Service Class 
 public saveDFR(dfrModel: DfrModel) {
    return this.httpClient.post(environment.apiURL   '/dfrs', dfrModel);
  }

// Method on component
  async onSaveForm() {
    if (this.form.value.dfrStatus == null) {
      this.form.value.dfrStatus = 'Open';
    }

    const loader = await this.loadingController.create({
      message: 'Saving DFR, one moment please.',
      animated: true
    }).then(loaderElement => {
      loaderElement.present();

      this.dfrService.saveDFR(this.form.value).subscribe( val => {
        loaderElement.remove();
        this.dfrService.showNotification('DFR Template Saved');
      }, error => {
        loaderElement.remove();
        this.showAlert('Error Saving DFR. Please ensure all fields are valid');
      });
    });
  }
  

//клиентская модель

 export class DfrModel {
    constructor (
        public _id: string,
        public projectName: string,
        public projectNumber: string,

    ){}


}
  

Ответ №1:

Поскольку я отправлял form.value, был прикреплен ключ _id со значением null. _id также привязан к моей модели. При сохранении нового документа в mongodb этот _id не должен отображаться в полезной нагрузке. Поэтому я просто удаляю отправляемую пару _id ключ / значение.

Это кажется странным способом справиться с ситуацией, и я думаю, что у меня что-то настроено неправильно. Если у кого-нибудь есть лучшее решение для отправки нового документа, пожалуйста, прокомментируйте ниже. Спасибо