在 MERN 上等待发布请求
Posted
技术标签:
【中文标题】在 MERN 上等待发布请求【英文标题】:Post request pending on MERN 【发布时间】:2021-11-21 13:48:20 【问题描述】:我正在尝试学习 MERN 堆栈。我正在创建我的第一个非常简单的网站。现在,我创建了一条路线,在其中创建用户,使用传递的数据抛出主体。这是服务器的代码:
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
require('dotenv').config();
const app = express();
const port = process.env.PORT || 5000;
app.use(cors);
app.use(express.json());
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, useNewUrlParser:true );
const connection = mongoose.connection;
connection.once('open', () =>
console.log("MongoDB database connection established succesfully")
)
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
app.listen(port, () =>
console.log(`Server is running on port: $port`);
);
现在,这里是用户路由器文件的代码,我把代码放进去:
const router = require('express').Router();//setting it as a express router
let User = require('../models/user.model');//requise the model created before
router.route('/').get((req, res) =>
User.find()//mongoose method, returns a promise
.then(users => res.json(users))//return the list of user
.catch(err => res.status(400).json('Error: ' + err));
);
router.route('/add').post((req, res) =>
const username = req.body.username;
const newUser = new User(username);
newUser.save()
.then(() => res.json('User added!'))
.catch(err => res.status(400).json('Error: ' + err));
);
module.exports = router;
最后,这是模型用户架构:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
//create the schema for the user
//like the model in Flask
const userSchema = new Schema(
username:
type: String,
required: true,
unique: true,
trim: true,
minlength: 3
,
,
timestamps:true,
);
const User = mongoose.model('User', userSchema); //create the model, via the schema
module.exports = User;
现在,为了测试它是否正确,在实现其他代码和前端之前,我想测试一下。首先我想添加一个新用户,看看 API 是否正常工作。我正在使用邮递员。我在这个 URL 上发送了请求:http://127.0.0.1:5000/users/add
,正文中包含以下 json:"username": "name"
。然后我发送,但邮递员继续告诉我它正在发送请求,并且持续了几分钟。我无法理解问题是否在于承诺,是否太低,是否我在代码或测试配置中写错了某些内容,Mongo 数据库是否存在问题,或其他任何问题。你能帮我吗?谢谢
【问题讨论】:
是app.use(cors())
不是app.use(cors)
始终使用 morgan
之类的记录器或其他库来记录请求。
似乎您没有从服务器发回任何响应!
【参考方案1】:
在您的数据库连接中,您不会等待promise
成为resolved
require('dotenv').config();
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
const app = express();
app.use(cors());
app.use(express.json());
const port = process.env.PORT || 5000;
const connectDB = async () =>
try
const conn = await mongoose.connect(process.env.ATLAS_URI,
useUnifiedTopology: true,
useNewUrlParser: true,
);
console.log(`MongoDB Connected: $conn.connection.host`);
catch (err)
console.error(`Error: $err.message`);
process.exit(1);
;
connectDB()
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
app.listen(port, () =>
console.log(`Server is running on port: $port`);
);
【讨论】:
以上是关于在 MERN 上等待发布请求的主要内容,如果未能解决你的问题,请参考以下文章
待发布在 Google Play 上还有 2 天,有问题吗?
iPhone 应用程序处于待发布状态后在 iTunes Connect 中编辑屏幕截图
当应用程序处于“待发布”阶段并由审阅者/测试人员(Google Play 商店)使用/审阅时,InstallerPackageName 是啥?