[英]How to fetch data from MongoDB?
我正在嘗試使用 Express + MongoDB 構建 React 應用程序。
我能夠將一些文件發布到 MongoDB。 目前,我正在嘗試弄清楚如何將獲取的數據打印到屏幕上。
我有這些路線:
router.post('/totalbalance', (request, response) => {
const totalBalance = new TotalBalanceModelTemplate({
totalBalance:request.body.totalBalance,
});
totalBalance.save()
.then(data => {
response.json(data);
})
.catch(error => {
response.json(error);
});
});
router.get('/totalbalance', (request, response) => {
TotalBalanceModelTemplate.find(request.body.totalBalance, (error, data) => {
if (error) {
return error
} else {
response.json(data[0])
}
})
});
這是 axios 請求:
useEffect(() => {
const resp = axios.get('http://localhost:4000/app/totalbalance');
console.log(resp);
}, []);
它返回一個 promise ,其參數data
等於 object 值,這是數組中的第一個值
data: {_
id: "60c48b4ec60919553d92319f",
totalBalance: 5555,
__v: 0
}
並將其打印到控制台。
如何將值totalBalance
而不是整個 promise 打印到控制台?
順便說一句,有時data
數組為空(數據庫中沒有文檔),我應該如何處理這些情況?
謝謝!
首先,Axios GET 方法沒有任何請求體。 但是您正嘗試在 MongoDB 查詢中使用它。 -“TotalBalanceModelTemplate.find(request.body.totalBalance,(錯誤,數據)=> {”。
查找查詢應為 object {}。 如果需要將條件傳遞給它。
第一點,只打印“totalBalance”output。 使用,console.log(resp.totalBalance);
第二點,處理記錄長度,有一個if else條件,
if (error) {
return error
} else if (data.length) {
return response.send("No records found")
} else {
response.json(data[0])
}
嘗試這個:
路線
router.post("/totalbalance", async (req, res) => {
try {
const totalBalance = new TotalBalanceModelTemplate({
totalBalance: req.body.totalBalance,
})
await totalBalance.save();
res.json(totalBalance)
} catch (error) {
res.status(400).json({
message: error.message
})
}
})
router.get("/totalbalance", async (req, res) => {
try {
const totalBalances = await TotalBalanceModelTemplate.find();
res.json(totalBalances)
} catch (error) {
res.status(400).json({
message: error.message
})
}
})
應用程序.js
import React, { useState, useEffect } from 'react';
import axios from 'axios';
export default function App() {
const [data, setData] = useState([]);
const getData = async () => {
try {
const response = await axios.get('http://localhost:4000/app/totalbalance');
await setData(response);
} catch (error) {
console.log(error);
}
};
useEffect(() => {
getData();
}, []);
return (
<div>
{data <= 0 ? (
<div className="empty">
<p>No data!</p>
</div>
) : (
data.map((d) => (
<ul key={d.id}>
<li>{d.totalBalance}</li>
</ul>
))
)}
</div>
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.