我可以用这个机构创建一个调查:
{
"name":"name of survey",
"description":"description of survet",
"openAt":"2020-02-12T23:00:00.000Z",
"closeAt":"2020-02-18T23:00:00.000Z",
"questions":[..],
}
服务器从 jwt 检索用户并将其存储为:
MongoAtlas 中的 Survey 文档截图(仅限用户部分)
现在,如果我用这个身体编辑我的调查:
{
"createdAt":"2020-02-02T16:12:14.082Z",
"_id":"5e36f4e008caf531ce848954",
"name":"new name",
...
"user":{
"createdAt":"2020-02-02T16:12:14.063Z",
"rank":0,"_id":"5e2f534422b6047e23c7f839",
"_id":"5e2f534422b6047e23c7f839",
...
}
}
我的文档已编辑,_id 类型变为 String 类型,而不是 ObjectId
MongoAtlas 中的 Survey 文档截图(仅限用户部分)
现在,由于字符串类型,此代码不再起作用(当 _id 为 ObjectId 时,它确实起作用)
await this.surveyModel.where('user._id').equals(user._id)
我将 Angular 8 用于前端,将 Nest.js + TypeGoose 用于后端。
我不知道如何解决这个问题,我是否应该创建一个将 String _id 替换为 ObjectId 的中间件?或者我应该在我的前端使用 ObjectId 而不是 string ?或者我应该默认使用字符串 TypeGoose 而不是 ObjectId ?这些是我想象的 3 个解决方案。