我正在尝试构建API,以使用Express和MongoDB获取所有用户的消息,模式如下所示:
mongoose.model(
"Messages",
new mongoose.Schema({
Creatore: { type: mongoose.Schema.Types.ObjectId, ref: "Users" },
title: { type: String, required: true },
text: { type: String, required: true },
CreatedDate: { type: Date, required: true },
})
);
字符串
在Express Server中添加新消息API:
router.post("/AddMessage", async (req, res, next) => {
let { title, text } = req.body;
if (!title || !text) {
return res.status(409).json({ message: "Missing Data" });
}
let newMessage = new Messages({
Creatore: req.session.userId, //this does not work
title: title,
text: text,
CreatedDate: new Date(),
});
try {
await newMessage.save();
res.send(200);
} catch {
res.send(409);
}
});
型
当这个API被调用时,它没有填充Creatore字段。我在数据库中得到了这个:
_id:“654531b57c89295a96ace0aa”
标题:“留言”
文本:“消息”
创建日期:2023-11- 03 T17:45:25.525+00:00
__v:0
会话配置良好
app.use(
session({
secret: "imad",
resave: false,
saveUninitialized: false,
store: store,
cookie: {
maxAge: 1000 * 60 * 60 * 24,
},
})
);
型
获取消息API::
router.get("/GetMessages", async (req, res) => {
try {
const messages = await Messages.find({}).populate('Creatore');
res.json(messages);
} catch (err) {
res.status(500).json({ error: "Failed to fetch messages" });
}
});
型
这不会在Creatore字段中填充User
我希望在调用Get Messages API时返回一个JSON,填充Creatore字段中的消息所有者,我不知道这是否是因为会话库不允许我传递会话中的用户ID。
Session文档示例:
_id:“ekhtIyX1jC9HAtQa45M9ZaAhdrOeA-dy”
2019 -11-04T17:32:45.862+00:00
会话:对象
Cookie:Object
用户ID:“65452 e9 c97 eaa 2c 238 dfa 6 e1”
我真的很努力地想找到解决这个问题的办法。请帮忙吗?
1条答案
按热度按时间mw3dktmi1#
我发现了问题:
字符串
我应该允许凭据,这是开发时非常重要的一步,允许cookie通过请求进入您的服务器。