通过ueser-id从mongo-db-Node,Express,TypeScript API获取记录



我正在使用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});
},

最新更新