#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 ключ / значение.
Это кажется странным способом справиться с ситуацией, и я думаю, что у меня что-то настроено неправильно. Если у кого-нибудь есть лучшее решение для отправки нового документа, пожалуйста, прокомментируйте ниже. Спасибо