我正在从数据库中检索用户对象并将其设置在快速会话中:
export const postLogin = async (
request: Request,
response: Response,
next: NextFunction
): Promise<void> => {
try {
request.session.user = await UserModel.findById('6127bd9d204a47128947a07d').orFail().exec()
response.redirect('/')
} catch (error) {
next(error)
}
}
然后我在用户对象上调用 Mongoose 方法populate()
来获取与之关联的购物车:
export const getCart = async (
request: Request,
response: Response,
next: NextFunction
): Promise<void> => {
try {
const userWithCartProducts = await request.session.user
.populate('cart.items.productId')
.execPopulate()
} catch (error) {
next(error)
}
}
但在这里我得到一个错误:TypeError: request.session.user.populate is not a function
我在 express-session 上定义了自定义用户类型,如下所示:
declare module 'express-session' {
interface SessionData {
user?: DocumentType<User>
}
}
正如您在上面的定义中看到的那样user
,我正在使用,DocumentType<User>
因为我正在使用Typegoose键入我的模型。我不确定这是否是 Typegoose 的做法。
我究竟做错了什么?任何输入将不胜感激。