我有一个端点,它在我的数据库中创建一个新服务器,当我说服务器时,它只是一个服务器名称。我们有几个游戏服务器,所以,我们希望从一个网站管理它们,
const createServer = asyncHandler(async (req, res) => {
const { gameName, serverName } = req.body;
const serverExist = await Server.findOne({ serverName });
if (!gameName || !serverName) {
res.status(400);
throw new Error("Please add game name / server name");
}
if (!serverExist?.isHidden) {
// if i set it to just serverExists it works
res.status(401);
throw new Error("Server exist");
}
//Get user using the id in the JWT
const user = await User.findById(req.user.id);
if (!user) {
res.status(401);
throw new Error("User not found");
}
const server = {
gameName,
serverName,
user: req.user.id,
};
await Server.create(server);
res.status(201).json(server);
});
现在,我检查服务器是否已经存在于serverExist
的数据库中,它返回关于该服务器的所有文档,所有工作正常。它有一个名为isHidden
的属性,当我在if
语句中设置它时,服务器无法返回任何响应。如果我将if
语句设置为仅if(serverExist)
,它确实工作,但我需要它的工作,如果服务器被设置为隐藏,以便用户可以重新创建它。我不想删除,因为它将是以后需要的。
我检查了所有的返回,看起来都没问题,甚至最后的服务器对象也有信息。问题是在我调用create方法的时候发生的。不知道为什么添加serverExist.isHidden
会使它无法创建文档!
1条答案
按热度按时间ev7lccsx1#
你逻辑上有点问题。
在计算
!serverExist?.isHidden
...时考虑这些状态| 州|
!serverExist?.isHidden
|| - ------|- ------|
| 不存在记录|
true
️|| 存在
isHidden: true
的记录|false
|| 存在
isHidden: false
的记录|true
|我将在查询中包含
isHidden
参数并使用Server.exists()方法