我正在编写节点应用程序的注册用户功能。我打电话来连接到mongodb数据库。但是,当我使用User.findOne({ email: req.body.email })
函数搜索数据库时,我的函数陷入了这一步。我使用postmate发送请求,并且能够console.log()
请求正文
用户路线:
router.post("/register", async (req, res) => {
console.log("in here");
user = await User.findOne({ email: req.body.email })
.then(user => {
console.log("in here");
if (user) {
console.log("2");
return res.status(400).json({ email: "Email address already exists" });
} else {
const newUser = new User({
first: req.body.first,
last: req.body.last,
email: req.body.email,
password: req.body.password
});
我的用户模型:
const UserSchema = new mongoose.Schema({
name: {
type: String,
trim: true
},
first: {
type: String,
trim: true,
required: "First Name Required"
},
last: {
type: String,
trim: true,
required: "Last Name Required"
},
email: {
type: String,
unique: true,
lowercase: true,
trim: true
},
password: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
}
});
module.exports = User = mongoose.model("User", UserSchema);
我的mogoClient:
const MongoClient = require("mongodb").MongoClient;
const databaseUri = require("../config/keys").mongoURI;
const connect = () => {
return new Promise((resolve, reject) => {
MongoClient.connect(
databaseUri,
{ useNewUrlParser: true },
(err, client) => {
if (err) {
reject("Unable to connect to MongoDB server");
console.log(err);
}
client.close();
}
);
});
};
module.exports = {
connect
};
server.js
const express = require("express");
const http = require("http");
const mongoClient = require("./database/mongoClient");
const routes = require("./routes");
const app = express();
app.set("port", process.env.PORT || 3000);
app.get("/", (req, res) => res.send("Hello World 3"));
//connect to database
mongoClient.connect();
//initialize routes
routes.init(app);
http.createServer(app).listen(app.get("port"), function() {
console.log("Express server listening on port " + app.get("port"));
});
答案 0 :(得分:0)
据我所知,您的Mongo客户端设置不正确。您使用Promise,但是然后
resolve
(您快点关闭它吗?!??),return new Promise((resolve, reject) => {
MongoClient.connect(
databaseUri,
{ useNewUrlParser: true },
(err, client) => {
if (err) {
reject("Unable to connect to MongoDB server");
console.log(err);
}
resolve(client);
});
});
和
//initialize routes
routes.init(app);
//connect to database
mongoClient
.connect()
.then(() => {
http
.createServer(app)
.listen(app.get("port"), function() {
console.log("Express server listening on port " + app.get("port"));
});
});
我也看不到您将Mongo客户端与其余代码连接的位置,例如猫鼬方案。