Typescript POST方法不向mongodb发送数据
我正在创建一个MERN应用程序,我创建了后端,并希望使用REST客户端vscode扩展对其进行测试。像这样:Typescript POST方法不向mongodb发送数据,typescript,mongodb,express,post,Typescript,Mongodb,Express,Post,我正在创建一个MERN应用程序,我创建了后端,并希望使用REST客户端vscode扩展对其进行测试。像这样: `POST http://localhost:4000/signup Content-Type: application/json { "email": "something@gmail.com", "username": "something", "password&qu
`POST http://localhost:4000/signup
Content-Type: application/json
{
"email": "something@gmail.com",
"username": "something",
"password": "something"
}`
它返回200 OK,但没有数据发送到MongoDB。
这是我从上面的测试中得到的:
HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
Content-Length: 2
ETag: W/"2-vyGp6PvFo4RvsFtPoIWeCReyIC8"
Date: Fri, 14 May 2021 06:51:53 GMT
Connection: close
{}
这是server.ts文件:
import express from "express";
import * as dotenv from "dotenv";
import mongoose from "mongoose";
import endpointsConfig from "./endpoints.config";
import routerUrls from "./routes/router";
import cors from "cors";
dotenv.config();
const app = express();
//database connection
mongoose.connect(endpointsConfig.DataBaseUrl, { useNewUrlParser: true }, () => {
console.log("database connection is success");
});
app.use(express.json());
app.use(cors());
//base path
app.use("/", routerUrls);
app.listen(4000, () => console.log("server is up and running on port 4000"));
import express from "express";
import mongooseModel from "../models/mongooseModel";
const router = express.Router();
type UserData = {
email: string;
username: string;
password: string;
};
router.post("/signup", (req, res) => {
const signupUser = new mongooseModel({
email: req.body.email,
username: req.body.username,
password: req.body.password,
});
signupUser
.save()
.then((data: UserData) => {
res.json(data);
})
.catch((error: string) => {
res.json(error);
});
});
export default router;
router.ts文件:
import express from "express";
import * as dotenv from "dotenv";
import mongoose from "mongoose";
import endpointsConfig from "./endpoints.config";
import routerUrls from "./routes/router";
import cors from "cors";
dotenv.config();
const app = express();
//database connection
mongoose.connect(endpointsConfig.DataBaseUrl, { useNewUrlParser: true }, () => {
console.log("database connection is success");
});
app.use(express.json());
app.use(cors());
//base path
app.use("/", routerUrls);
app.listen(4000, () => console.log("server is up and running on port 4000"));
import express from "express";
import mongooseModel from "../models/mongooseModel";
const router = express.Router();
type UserData = {
email: string;
username: string;
password: string;
};
router.post("/signup", (req, res) => {
const signupUser = new mongooseModel({
email: req.body.email,
username: req.body.username,
password: req.body.password,
});
signupUser
.save()
.then((data: UserData) => {
res.json(data);
})
.catch((error: string) => {
res.json(error);
});
});
export default router;
和猫鼬:
import mongoose from "mongoose";
const signupTemplate = new mongoose.Schema({
email: {
type: String,
required: true,
},
username: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
date: {
type: Date,
default: Date.now,
},
});
const mongooseModel = mongoose.model("usertable", signupTemplate);
export default mongooseModel;
从MongoDB cloud dashboard中,我看到连接良好,但不知道出了什么问题代码没有任何问题。连接字符串更有可能是错误的 能否在回调中添加err参数,以查看是否打印出任何内容
mongoose.connect(endpointsConfig.DataBaseUrl, { useNewUrlParser: true }, (err) => {
if (err) {
console.log(err)
} else {
console.log("database connection is success");
}
});
您是对的,问题在于连接字符串,更确切地说是我加载.env变量的方式。非常感谢。