【问题标题】:save item in mongoose and monoDB将项目保存在 mongoose 和 mongoDB 中
【发布时间】:2020-10-19 19:46:27
【问题描述】:

我正在尝试连接到我的 mongoDB 并在其中保存一个新用户。

当我运行 express 服务器时,db 已连接,但 post 请求似乎没有发生。

有人可以检查我的代码并帮助我找到问题吗?

**当我在 postmam 上发送请求时,邮递员最终得到:'could not get response, error:socket hang up'。

我在下面附上我的代码:

我的服务器:

const express = require('express')
const app = express();
const mongoose = require('mongoose')
const dotenv = require('dotenv')
const authRoute = require('./routes/aouth')

dotenv.config();

//conect to db
mongoose.connect(mongodb://localhost/users, { useUnifiedTopology: true, useNewUrlParser: true }, () => console.log("connected!"))

//middleware 
app.use(express.json());

//route middleware
app.use('/api/user', authRoute);

app.listen(3000, () => console.log("listening on port 3000!"))

我的 User.js:

const mongoose = require('mongoose')
const userSchema = new mongoose.Schema({
    password: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    }
})
module.exports = mongoose.model('User', userSchema);

我的路由器(routes/aouth.js):

  router.post('/reg', async(req, res) => {
    const user = new User({
        password: req.body.password
    })
    try {

        const savedUser = await user.save()
        res.status(201).json(savedUser)
    } catch (err) {
        res.status(400).json({ message: err.message })
    }

})

对邮递员我的要求是:

POST http://localhost:3000/api/user/reg { “密码”:“1234” }

希望你们能帮助我!! 谢谢!!

【问题讨论】:

  • 如何检查数据库连接?
  • @mamunmohamed 在 server.js 中,我有一行“mongoose.connect”,在控制台上,每次服务器启动时我都会看到“已连接”
  • 在password之后添加res.end()

标签: node.js mongodb express mongoose postman


【解决方案1】:

一看,发现导入的路径不对。

const authRoute = require('./routes/aouth')

不应该吗?

const authRoute = require('./router/auth')

为确保您已连接到数据库,请添加以下行。

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));

【讨论】:

  • 文件夹的名字是routes,里面有一个auth.js的文件。为什么会是router呢?我添加了这些行。似乎连接存在
【解决方案2】:

您必须将此代码添加到您的服务器。

app.use(express.urlencoded({extended: false}))

它会起作用的。

【讨论】:

    【解决方案3】:

    扩展@Daryl 答案,@Shir:正如你提到的routes 文件夹名称是正确的。 但是您的服务器文件中有一个名为 auth.js 的文件,您正在导入 aouth。

    请验证,您在服务器文件中指定了正确的导入文件名,否则这可能是导入路径问题。

    【讨论】:

    • 感谢您的评论,错误只是在这里,而不是在我的代码中。所以这无论如何都不是问题
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 2017-07-27
    • 2016-11-22
    • 2011-11-23
    • 2020-10-17
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多