Lấy dữ liệu từ mongodb trong phản ứng

nhập {useQuery} từ "truy vấn phản ứng"; . sau đó (phản hồi => { trả lời. json() }) }) /* logic phụ thuộc vào dữ liệu của bạn * userEffect(() => {}, [data. độ dài]) */ trả về ({con}) }

Tôi đang cố lấy dữ liệu từ máy chủ để hiển thị một số bài viết. Trong khi Người đưa thư trả về mảng đối tượng và http. //máy chủ cục bộ. 5000/bài báo hiển thị tốt, khi tôi tìm nạp vào React thì màn hình trống và không có lỗi. Có một đoạn trích từ máy chủ. js

const express=require('express');
const bodyParser=require('body-parser');
const cookieParser=require('cookie-parser')
const cors=require('cors');
const app=express();

const db=require('./db');
const articleController=require('./controllers/article-controller');
const userController=require('./controllers/user-controller');
const postController=require('./controllers/post-controller');

app.use(cors());
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(cookieParser())

db.on('error', console.error.bind(console, 'MongoDB connection error'))

//get /articles
app.get('/articles',articleController.get)

app.use('/',userController)

app.listen(5000, ()=>
    console.log('Server started on port 5000')
);

Đây là ArticleService. js từ máy khách

export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}

Và bài báo. thành phần jsx

import React, {useState, useContext, useEffect} from 'react'
import {Navbar, Footer} from '../components'
import ArticleService from '../Services/ArticleService'
import {AuthContext} from '../Context/AuthContext'

const Articles=props=>{
//const [article, setArticle]=useState({title:"", content:""})
const [articles, setArticles]=useState([])
const authContext =useContext(AuthContext)

useEffect(()=>{
    ArticleService.getArticles()
        .then(data=>{
            setArticles(data.articles)
        })
},[])

return(
    

Articles

    { articles && articles.map(article => { return(
  • {article.title}

    {article.content}

  • ) }) }

) } export default Articles

Tôi cũng không nhận được bất kỳ lỗi nào trong bảng điều khiển. Chỉ là phản hồi với loại. "cors", trạng thái. 200 và ok. thật

Khi bạn đang làm việc trong ứng dụng ngăn xếp MERN (MongoDB, Express, React và Node), bạn thường được yêu cầu tìm nạp JSON của bộ sưu tập Mongo và sử dụng dữ liệu đó trên giao diện người dùng. Với sự phổ biến của cơ sở dữ liệu NoSQL, việc tìm nạp dữ liệu từ bộ sưu tập Mongo thông qua ứng dụng React thông qua máy chủ tốc hành thực sự đơn giản

Hướng dẫn này hướng dẫn bạn các yếu tố cần thiết để thực hiện yêu cầu XHR tới điểm cuối trên máy chủ cấp tốc để nhận JSON của bộ sưu tập Mongo trong cơ sở dữ liệu MongoDB của bạn

Thiết lập phụ trợ

Nếu bạn đã có máy chủ cấp tốc với điểm cuối nơi bạn có thể tìm nạp bộ sưu tập Mongo của mình, thì bạn có thể bỏ qua bước này. Nếu không, bạn có thể dễ dàng thiết lập máy chủ cấp tốc bằng NodeJS bằng các bước sau

Đầu tiên, tạo một dự án

1npm init -y 
6 mới bằng cách sử dụng lệnh sau.

1npm init -y 

vỏ bọc

Cài đặt mongoose, body-parser và express

1npm i mongoose express body-parser 

vỏ bọc

Tạo một lược đồ

Tạo lược đồ có tên

1npm i mongoose express body-parser 
0 cho bộ sưu tập Mongo của bạn và một mô hình có tên
1npm i mongoose express body-parser 
1
, as shown below, and export it using
1npm i mongoose express body-parser 
2
.

________số 8

jav

Tạo bộ điều khiển

Tạo bộ điều khiển để tìm nạp tất cả việc cần làm từ bộ sưu tập Mongo của bạn bằng phương thức

1npm i mongoose express body-parser 
3 trên mô hình của bạn và xuất nó ở cuối.

export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
0

jav

Thiết lập Bộ định tuyến tốc hành

Tạo phiên bản bộ định tuyến của express bằng cách gọi phương thức ______44 trên đó. Tiếp theo, tạo một tuyến đường sẽ đóng vai trò là điểm cuối API để nhận tất cả việc cần làm từ bộ sưu tập Mongo của bạn bằng cách gọi phương thức

1npm i mongoose express body-parser 
5 và chuyển tuyến đường .

export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
3

jav

Cuối cùng, kết hợp tất cả lại với nhau bằng cách tạo một ứng dụng cấp tốc và kết nối cơ sở dữ liệu MongoDB của bạn. Ví dụ này sử dụng MongoDB Atlas để tạo và kết nối với cơ sở dữ liệu đám mây bằng cách sử dụng chuỗi

1npm i mongoose express body-parser 
6 .

export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
5

jav

Bây giờ bạn có thể truy cập bộ sưu tập mongo của mình bằng cách sử dụng điểm cuối http. //máy chủ cục bộ. 5000/todos sau khi chạy

1npm i mongoose express body-parser 
7 trong thiết bị đầu cuối.

Tạo giao diện người dùng

Bộ sưu tập Mongo bạn sẽ sử dụng trông như thế này

export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
7

json

Bộ sưu tập JSON này được trả về từ điểm cuối được tạo trong phần trước sau khi thêm dữ liệu vào cơ sở dữ liệu theo cách thủ công. Nếu bạn muốn sử dụng bộ sưu tập của mình, hãy sử dụng API được tạo trong phần trước hoặc sử dụng bộ sưu tập ở trên bên trong tệp văn bản cục bộ dưới dạng mô hình API. Phương pháp thực hiện yêu cầu XHR trong cả ba trường hợp đều giống nhau

Yêu cầu XHR

Bên trong ứng dụng React của bạn, nhập

1npm i mongoose express body-parser 
8 và
1npm i mongoose express body-parser 
9
. Móc ______48 được sử dụng để tạo trạng thái lưu trữ đối tượng JSON từ điểm cuối. Thực hiện một yêu cầu XHR bên trong
1npm i mongoose express body-parser 
9
chức năng gọi lại của móc vòng đời bằng cách sử dụng
1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
2
. Hãy xem đoạn mã sau.

import React, {useState, useContext, useEffect} from 'react'
import {Navbar, Footer} from '../components'
import ArticleService from '../Services/ArticleService'
import {AuthContext} from '../Context/AuthContext'

const Articles=props=>{
//const [article, setArticle]=useState({title:"", content:""})
const [articles, setArticles]=useState([])
const authContext =useContext(AuthContext)

useEffect(()=>{
    ArticleService.getArticles()
        .then(data=>{
            setArticles(data.articles)
        })
},[])

return(
    

Articles

    { articles && articles.map(article => { return(
  • {article.title}

    {article.content}

  • ) }) }

) } export default Articles
3

jsx

Bên trong hàm gọi lại của

1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
3 , hãy tạo một phiên bản mới của
1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
2
object. Then call the endpoint with the request method type (which is GET in this example) to create a gateway to that request. This step is essential as it tells the browser that you are now open for making requests to an endpoint to get some resources back. By calling the
1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
5
, bạn gọi hàm được kích hoạt bởi
1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
6
.
1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
7
and
1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
8
of the request. The
1const mongoose=require('mongoose'); 
2 
3const todoSchema=mongoose.Schema({ 
4 name:{ 
5 type:String, 
6 required:true 
7 }, 
8 status:{ 
9 type:String, 
10 required:true 
11 } 
12},{timestamps:true}) 
13 
14const Todo=mongoose.model('Todo',todoSchema); 
15module.exports=Todo; 
7
export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
00
cho biết rằng yêu cầu đã sẵn sàng để được xử lý và
export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
01 . Bên trong khối
is received from the endpoint, indicating everything is okay. Inside the
export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
02
, phân tích đối tượng
export default {
getArticles: ()=>{
     return fetch('http://localhost:5000/articles')
        .then((response, error)=>{
            if(response.status !== 401){
                console.log(response)
                return response.json().then(data => data)
            }
            else{
                console.log(error)
                return {message:{msgBody:"Error"}}
            }
        })
}}
03
từ yêu cầu thành một . Đây là cách bạn thực hiện một yêu cầu XHR để lấy JSON của bộ sưu tập Mongo của bạn và lưu trữ nó bên trong trạng thái cục bộ của thành phần của bạn. Bước cuối cùng, bạn có thể hiển thị chi tiết của bộ sưu tập này trên DOM bằng cách lặp qua trạng thái.

1npm init -y 
5

jsx

Bây giờ bạn có thể xem việc cần làm từ bộ sưu tập Mongo của mình trên trang

Sự kết luận

Mặc dù tạo yêu cầu XHR là phương pháp nguyên thủy nhất để tạo yêu cầu AJAX, nhưng bạn phải luôn sử dụng các phương pháp hiện đại như API tìm nạp hoặc Axios để thực hiện lệnh gọi API. Chúng dễ sử dụng, có đường cong học tập nông và có thể xử lý nhiều yêu cầu cồng kềnh bằng cách sử dụng các tính năng nâng cao như chuỗi lời hứa. Ví dụ tương tự được sử dụng trong hướng dẫn này có thể được mã hóa theo cách gọn gàng hơn bằng cách sử dụng Axios hoặc API tìm nạp. Hãy thử điều đó như một bài tập

Làm cách nào để tìm nạp dữ liệu từ MongoDB React?

Làm cách nào để bạn tìm nạp dữ liệu từ MongoDB trong nút JS và hiển thị trong React? .
Bước 1 – Tạo ứng dụng Node Express js
Bước 2 – Cài đặt phụ thuộc cầy mangut flash ejs body-parser
Bước 3 – Kết nối ứng dụng với MongoDB
Bước 4 – Tạo mô hình
Bước 5 – Tạo các tuyến đường
Bước 6 – Tạo Bảng HTML và Danh sách Hiển thị

Làm cách nào để tìm nạp dữ liệu từ MongoDB?

Bạn có thể sử dụng thao tác đọc để truy xuất dữ liệu từ cơ sở dữ liệu MongoDB của mình. Có nhiều loại thao tác đọc truy cập dữ liệu theo những cách khác nhau. Nếu bạn muốn yêu cầu kết quả dựa trên một tập hợp tiêu chí từ tập hợp dữ liệu hiện có, bạn có thể sử dụng thao tác tìm chẳng hạn như phương thức find() hoặc findOne().

Bạn có thể kết nối với MongoDB trong React không?

Trước hết, chúng tôi không thể kết nối React JS với MongoDB vì mọi thứ không hoạt động như thế này. Đầu tiên, chúng tôi tạo một ứng dụng phản ứng, sau đó để bảo trì phụ trợ, chúng tôi tạo API trong nút. js và thể hiện. js đang chạy ở một cổng khác và ứng dụng phản ứng của chúng tôi đang chạy ở một cổng khác.

Làm cách nào để tìm nạp dữ liệu từ MongoDB bằng axios?

Sử dụng Mongoose và AXIOS để tải dữ liệu APU lên MongoDB .
Đảm bảo bạn đã cài đặt nodejs và NPM, NPM đi kèm với nodejs
npm cài đặt cầy mangut axios
Yêu cầu các gói trong chỉ mục của bạn. .
Nhận mã thông báo API và URL yêu cầu (Tôi sẽ sử dụng URL API kho lưu trữ của mình)
Kết nối với DB và lấy dữ liệu từ GitHub