问题描述
我第一次使用 React Admin,我的用户(来自 mongoDB)显示得很好。当我单击特定用户上的“编辑”(或“删除”)按钮时会出现问题:它说“GET http://localhost:3002/api/users/2a1a3a61-f73b-4a01-b609-ae4bb815f59e 404(不是找到)”
我使用“http://localhost:3002/api/users”向mongoDB发送GET请求:“app.use('/api/users',require('./api/GetUsers'))” “2a1a3a61-f73b-4a01-b609-ae4bb815f59e”是我点击的用户的id。
我记得当我第一次开始测试 React Admin 时,我使用 jsonplaceholder.typicode 来获取数据并且编辑功能也能正常工作,当然,刷新时不会持续。
我错过了什么?问题是我的 api (http://localhost:3002/api/users) 目的只是获取数据而不是发布/放置,也许?
/api/GetUsers
const express = require('express');
const mongoose = require('mongoose');
const ContactUser = require('../DB/ContactUser');
const router = express.Router();
const getUsers = async (req,res) => {
ContactUser.find()
.exec((err,user) => {
if(err){
res.json(err);
} else {
res.setHeader('Access-Control-Expose-Headers','Content-Range');
res.setHeader('Content-Range','users 0-20/20');
res.json(user);
}
})
};
router.route('/').get(getUsers);
module.exports = router;
/DB/ContactUser
const mongoose = require('mongoose');
const contactUser = new mongoose.Schema({
name: String,email: String,message: String,id: String
});
module.exports = mongoose.model('contactUser',contactUser);
解决方法
您缺少的第二条路径不是检索用户列表,而是检索单个用户。它将使用 URL 中的 id 来查找一个用户。类似的东西:
router.get('/:id',function(req,res) {
ContactUser
.findOne({ _id: req.params.id })
.exec((err,user) => err ? res.json(err) : res.json(user));
});