没有得到新记录的_id
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有得到新记录的_id相关的知识,希望对你有一定的参考价值。
我有一个使用node,express和mongoose的api。当我使用Postman调用api时,返回模型中的_id值。当我使用基于angularjs和ionic的web应用程序调用api时,_id为null。两种情况下都会保存记录。
我尝试在angularjs服务中设置标头。如果获取所有记录,则ID返回。我试过从猫鼬模型和角度模型中设置和删除_id
// 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,
){}
}
答案
因为我发送了form.value,所以附加了一个值为null的_id键。 _id也附在我的模型上。在mongodb中保存新文档时,该_id不应出现在有效负载中。因此,我只删除提交的_id键/值对。
这似乎是处理这种情况的一种奇怪的方式,我认为我有一些错误的设置。如果有人有更好的解决方案来提交新文件,请在下面评论。谢谢
以上是关于没有得到新记录的_id的主要内容,如果未能解决你的问题,请参考以下文章