我正在使用TypeScript api构建Node JS,Express,我想在其中获取特定用户存储的数据。我想根据用户ID从mongodb获得reocrd。
我的DataRouter.ts
router.get('/:userId', Data.findByUserId);
我的服务.ts
async findByUserId(id: string): Promise<IRecord[]> {
try {
return await DataModel.find({userId: id});
} catch (error) {
throw new Error(error.message);
}
},
我的数据组件
export async function findByUserId(req: Request, res: Response, next: NextFunction): Promise<void> {
try {
const record: IData[] = await DataService.findByUserId(req.params.id);
res.status(200).json(record);
} catch (error) {
next(new HttpError(error.message.status, error.message));
}
}
和我的IRepository.ts
findByUserId(id: string): Promise<T[]>;
我得到错误
HttpError:值转换为ObjectId失败"auth0|5fa05bf7657a9f006f9be77d";在路径"_id";对于模型";数据模型";
如果有人有经验,我将非常感谢,并分享你的知识。
问题似乎是传递给DataModel.find
方法的userId
不是有效的ObjectId。
由于某种原因,objectId包含前缀auth0|
。也许你用这个参数调用路由?
正如您在错误消息auth0|5fa05bf7657a9f006f9be77d
中看到的那样,您得到了一个无效的对象ID
auth0|
来自哪里?
你也可以将你的方法缩短为:
findByUserId(id: string): Promise<IRecord[]> {
return DataModel.find({userId: id});
},