当我尝试通过卖家 ID 获取库存编号时,为什么 $and 运算符在 mongodb mongoose 中不起作用?
why is $and operator not working in mongodb mongoose when iam trying to fetch stock number through sellerId?
我正在使用此函数通过 sellerId 获取库存编号,而不是一条记录
我得到了所有这些。
const fetchStock = (req, res) => {
StockModel.findOne({$and: [{ "productId": req.body.productId._id }, { "sellerId": req.body.sellerId }] })
.then((stock) => {
res.json(stock);
})
.catch((err) => {
res.json({ Message: "Internal Server Error.", err });
});
};
这里没有必要使用$and
,只需要这样做:
const fetchStock = (req, res) => {
StockModel.findOne({ "productId": req.body.productId._id, "sellerId": req.body.sellerId })
.then((stock) => {
res.json(stock);
})
.catch((err) => {
res.json({ Message: "Internal Server Error.", err });
});
};
您只需要在某些情况下使用 $and
,例如,您正在检查 相同 age
属性,像这样:
{
$and: [{ age: { $gt: 2 } }, { age: { $lte: 4 } }];
}
试试这个:
const fetchStock = async (req, res) => {
try {
const { productId, sellerId } = req.body;
let stock = await StockModel.findOne({ "productId": productId._id, "sellerId": sellerId })
await res.json(stock);
} catch (err) {
res.json({ Message: "Internal Server Error.", err });
}
}
这不可能,findOne
returns 你的文档数组,可能你重新编写了代码,但你忘记了重启服务器/刷新页面/重新发送查询。
我正在使用此函数通过 sellerId 获取库存编号,而不是一条记录 我得到了所有这些。
const fetchStock = (req, res) => {
StockModel.findOne({$and: [{ "productId": req.body.productId._id }, { "sellerId": req.body.sellerId }] })
.then((stock) => {
res.json(stock);
})
.catch((err) => {
res.json({ Message: "Internal Server Error.", err });
});
};
这里没有必要使用$and
,只需要这样做:
const fetchStock = (req, res) => {
StockModel.findOne({ "productId": req.body.productId._id, "sellerId": req.body.sellerId })
.then((stock) => {
res.json(stock);
})
.catch((err) => {
res.json({ Message: "Internal Server Error.", err });
});
};
您只需要在某些情况下使用 $and
,例如,您正在检查 相同 age
属性,像这样:
{
$and: [{ age: { $gt: 2 } }, { age: { $lte: 4 } }];
}
试试这个:
const fetchStock = async (req, res) => {
try {
const { productId, sellerId } = req.body;
let stock = await StockModel.findOne({ "productId": productId._id, "sellerId": sellerId })
await res.json(stock);
} catch (err) {
res.json({ Message: "Internal Server Error.", err });
}
}
这不可能,findOne
returns 你的文档数组,可能你重新编写了代码,但你忘记了重启服务器/刷新页面/重新发送查询。