我目前正在与NestJS结合使用Mongoose。
当我试图在我的nest REST API上发出POST请求时,我得到了我提供的所有字段的成功响应。然而,我需要_id属性在我的前端以及(用于导航目的)。
所以当前的存储过程是这样的:
@Injectable()
export class JourneysService {
constructor(@InjectModel(Journey.name) private journeyModel: Model<JourneyDocument>) {}
async create(createJourneyDto: CreateJourneyDto): Promise<Journey> {
const createdJourney = new this.journeyModel(createJourneyDto);
console.log(createdJourney._id);
return await createdJourney.save();
}
[...]
}
console.log(_id)是零。POST请求返回的对象是:
return: {
photos: [],
active: true,
_id: null,
createdAt: 2021-01-25T20:36:54.809Z,
updatedAt: 2021-01-25T20:36:54.809Z,
startDate: null,
endDate: null,
title: 'Sample title',
description: 'lorem ipsum dolor sit amet',
__v: 0
}
注意_id包含null的字段.
然而,在数据库中,_id当我执行GET请求之后,_id也正在被传输:
{
"photos": [],
"active": true,
"_id": "600f2be62ef43be2855e358f",
"createdAt": "2021-01-25T20:36:54.809Z",
"updatedAt": "2021-01-25T20:36:54.809Z",
"startDate": null,
"endDate": null,
"title": "Sample title",
"description": "lorem ipsum dolor sit amet",
"__v": 0
}
那么为什么不创建对象呢?有人知道怎么回事吗?为什么创建时id字段总是为空?
我也查了这个问题,确切地说明了我目前试图检索_id的方式:猫鼬mongodb如何返回刚刚保存的对象?
您正在等待记录创建,这就是为什么_id不存在
@Injectable()
export class JourneysService {
constructor(@InjectModel(Journey.name) private journeyModel: Model<JourneyDocument>) {}
async create(createJourneyDto: CreateJourneyDto): Promise<Journey> {
const createdJourney = await new this.journeyModel(createJourneyDto).save();
console.log(createdJourney._id);
return createdJourney;
}
[...]
}