#node.js #reactjs #mongodb #express #fetch
Вопрос:
я не знаю, как получить course2 в express из react… console.log(course2) дает мне правильные данные из mongodb…
но как мне использовать fetch в react для получения этих данных?
я еще не изучал axios, но если кто-то знает, как это сделать в axios, это нормально….
const express = require('express')
const mongoose = require('mongoose')
const app = express()
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
next();
});
app.use(express.json()); //Used to parse JSON bodies... post values
app.use(express.urlencoded( {extended: true})); //Parse URL-encoded bodies (html-form)
mongoose.connect("mongodb srv://-----",
{ useUnifiedTopology: true, useNewUrlParser: true })
.then(() => console.log('connected'))
.catch(err => console.error('no connection', err))
const sensor1 = new mongoose.Schema({
temp1: Number,
hum1: Number,
date: { type: Date, default: Date.now },
})
const Course = mongoose.model('Course', sensor1)
var db = mongoose.connection
db.on('error', console.log.bind(console, "connection error")); // för insertOne
db.once('open', function(callback){
console.log("connection succeeded");
})
async function getCourse() {
let course2 = await Course.find()
console.log(course2)
}
app.listen(5000, () => {
console.log('Listening on port 5000')
})
getCourse()```
Ответ №1:
Шаг 1. Создайте конечную точку
Сначала вам нужно определить конечную точку в вашем бэкэнде/экспресс-приложении. Например:
app.get("/courses", async (req, res, next) => {
try {
const course2 = await Course.find();
res.status(200).send(course2);
} catch (err) {
console.log(err);
res.status(500).send();
}
});
Теперь у вас есть конечная точка, которую вы можете вызвать из своего кода интерфейса: http://localhost:5000/courses
.
Шаг 2: Используйте конечную точку с помощью Axios
Axios довольно прост в использовании. Например:
import axios from 'axios'
...
axios.get('http://localhost:5000/courses').then(response => {
// response.data is your 'course2'
console.log(response.data)
}).catch(err => {
console.log(err);
});
Если вы собираетесь вызвать этот новый api в своем приложении React, вы , вероятно, поместите этот вызов axios в a componentDidMount
useEffect
или какую-либо другую функцию.