我使用express.js制作了一个非常简单的api。这是代码:
var express = require('express');
var app = express();
var morgan = require('morgan');
var UserModel = require('../Models/User')
app.use(morgan('short'));
app.use(express.json());
app.get('/getAll', (req, res) => {
res.status(200).json({auth: true});
})
app.post('/addUser', (req, res) => {
const { name, email, password } = req.body;
UserModel.create({name, email, password}, (err, user) => {
if(err) return res.status(500).end({auth: false})
res.status(200).end({user});
});
});
module.exports = app;
这是userModel:
const mongoose = require("mongoose")
const Schema = mongoose.Schema;
const UserSchema = new Schema(
{
name: String,
email: String,
password: String,
},
{timestamps: false}
);
mongoose.model("User", UserSchema);
module.exports = mongoose.model("User");
这是主要的server.js文件:
var express = require('express');
var app = express();
const AuthController = require("./Controllers/AuthController");
const PORT = 3001;
app.use("/api/auth", AuthController);
app.listen(PORT, () => console.log(`Listening on port ${PORT}..`))
这是db.js文件:
const mongoose = require('mongoose');
const dbRoute = "mongodb://<user>:<password>@<stuff>/nodejs-db";
mongoose.connect(
dbRoute,
{useNewUrlParser: true}
);
这就是问题所在。当我尝试使用Insomnia对此API发出请求时,请求不会结束。基本上,Insomia开始发送请求,我必须等待20秒,直到我在我的快速终端上收到一些东西。如果我手动结束请求,我会得到:
::ffff:127.0.0.1 - POST /api/auth/addUser HTTP/1.1 - - - - ms
我尝试过在线查找,但找不到任何有用的东西。 我来自Django背景。我是Node和Express js的新手。
编辑:
问题仅在于发布请求,因为每当我发出get请求时,它都会立即返回{auth: true}
。
答案 0 :(得分:0)
将您的.end()
更改为.send()
app.post('/addUser', (req, res) => {
const { name, email, password } = req.body;
UserModel.create({name, email, password}, (err, user) => {
if(err) return res.status(500).send({auth: false})
res.status(200).send({user});
});
});
答案 1 :(得分:0)
我解决了这个问题。 显然问题是我的数据库连接在另一个文件上。 我所做的只是将内容从db.js文件移动到我的server.js文件。 我忘了包括我的数据库文件。