我使用express和mongoose来保存数据。这是我的代码
连接.js
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/dribbble", {useNewUrlParser: true,})
.then(() => console.log("connection start"));
用户架构.js
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
fname:{
type:String,
required:true,
},
userName:{
type:String,
required:true,
unique:true,
},
email:{
type:String,
required:true,
},
password:{
type:String,
required:true,
},
terms:Boolean,
image:String,
location:String,
})
const user = new mongoose.model("user",userSchema);
module.exports = user;
routes.js
const express = require("express");
const router = express.Router();
const user = require("../Models/userSchema");
//CREATE NEW USER PART 1
router.post("/create-user",(req,res) => {
console.log(req.body);
const body = req.body;
const newUser = user(body);
newUser.save().then(newUser => {
console.log(req.body);
res.status(200).send(newUser);
res.body;
}, err => {
res.status(400).send("Something went wrong");
})
});
router.get("/",(req,res) => {
user.find({}).then(function (users) {
res.send(users);
});
})
module.exports = router;
和index.js
const express = require('express');
const app = express();
require('./DB/connection');
const router = require('./Routes/routes');
const cors = require("cors");
app.use(express.urlencoded({extended:true}))
const PORT = 5000;
const corsOptions = {
origin: 'http://localhost:3000',
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
credentials: true,
optionsSuccessStatus: 204,
};
app.use(express.json());
app.use(cors(corsOptions));
app.use(router);
app.listen(PORT,() => {
console.log(`running on ${PORT}`)
})
在route.js中的create-user api中,我可以看到第一个console.log,但看不到第二个。没有错误,但我在 mongoDB Compass 中仍然没有任何内容
我已经尝试寻找架构和模型中的问题,但我认为它看起来不错
这是因为您没有使用
new
关键字。
根据 mongoose docs 如果您不通过
modelName.create=User.create(body)
创建文档,那么您必须首先创建该文档的实例。
创建文档有两种方法!
1:一个是使用new关键字
const newUser=new User(data)
2:使用
create method
我主要使用返回承诺的 create
。