[英]MongoDB Atlas/Cloud retrieving data from _id
我正在使用 MongoDB Atlas/Cloud 创建一个项目,并且我有方法从云中获取我创建的数据库的所有数据。
我是这样做的:
router.get('/', (req, res) => {
// http://localhost:3000/data
client.connect(async err => {
if (await err) {
console.log("Error connecting to MongoDB Cloud:\n\t" + err.toString());
}
console.log("Connected to the DB!");
const collectionData = client.db("myDatabase").collection("data");
try {
const data = await collectionData.find().toArray();
console.log(data);
res.json(data);
} catch (e) {
res.json({message: e});
}
await client.close();
});
});
但我希望能够通过在 URI 中引入其 _id 来单独收集每个数据。 这就是我尝试这样做的方式:
router.get('/:dataID', (req, res) => {
// http://localhost:3000/data/<ID>
client.connect(async err => {
if (await err) {
console.log("Error connecting to MongoDB Cloud:\n\t" + err.toString());
}
console.log("Connected to the DB!");
const collectionData = client.db("myDatabase").collection("data");
try {
console.log(req.params.dataID); // It works, it prints the _id
const specificData = await collectionData.findById(req.params.dataID).toArray();
console.log(specificData);
res.json(specificData);
} catch (e) {
res.json({message: e});
}
await client.close();
});
});
但它不起作用。 我正在检索一个空白 object: message: {}
。 我检查了引入的 _id,它与我试图检索的 mongoDB object 中的 _id 完全相同。 我究竟做错了什么? 它应该是const specificData = await collectionData.findById(req.params.dataID).toArray();
但我不知道要改变什么才能让它正常工作。
PS:在向服务器发送 GET 请求到/data
后,我得到了数据,但是如果我在此之后尝试再次请求,我得到一个 MongoDB 错误,有人知道为什么会这样吗? 先感谢您
解决了:
const specificData = await collectionData.find(req.params.dataID).toArray();
console.log(specificData.get[0]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.