MongoDB Atlas连接正常,但在Heroku中不显示数据

时间:2019-05-31 15:31:09

标签: heroku mongoose

我想在MongoDB Atlas中显示我数据库中的用户。我已成功创建连接,但无法显示用户。这是我第一次使用MongoDB Atlas和Express。

在我的系统上,使用MongoDB可以正常工作,但不能使用MongoDB Atlas。

这是我编写的一些用于连接和显示用户的代码。

mongoose.connect("mongodb+srv://wulforr:<my password here>@cluster0-rpwjk.mongodb.net/test?retryWrites=true&w=majority" ,{useNewUrlParser: true, useCreateIndex: true})
.then(()=>{
    console.log("connected to db");
})
.catch((err)=>{
    console.log("error:",err);
})
let userSchema = new mongoose.Schema({
    name: String,
    email: String,
    credits: Number
})

let User = mongoose.model("user", userSchema);
app.get("/users", function (req, res) {
    // finding the information about all users from the database
    User.find({}, function (err, response) {
        if (err) {
            console.log(err);
        }
        else {
            res.render("users.ejs", { result: response });

        }

    })
})

我在MongoDB Atlas中给了0.0.0.0/0作为IP地址,这样任何人都可以超出它。

我的MongoDB地图集集合的视图:

A view of my MongoDB atlas collection

预期输出:

Expected output

给出Heroku的输出:

Given output by Heroku

我做错了什么?

3 个答案:

答案 0 :(得分:1)

您可能需要在ATLAS中更新IP白名单。

enter image description here

enter image description here

答案 1 :(得分:1)

我遇到了同样的错误,与mongoDB Atlas的连接正常,但是我没有从创建的dabatase中获取任何数据。

问题在于它默认指向指向test的数据库的连接字符串,如@ cluster0-rpwjk.mongodb.net /所示。

mongodb+srv://wulforr:<my password here>@cluster0-rpwjk.mongodb.net/test?retryWrites=true&w=majority

所以我解决了更改连接字符串以指向我的数据库名称的问题

mongodb+srv://wulforr:<my password here>@cluster0-rpwjk.mongodb.net/MY_DATABASE?retryWrites=true&w=majority

答案 2 :(得分:0)

创建一个名称为test的数据库,然后向其中添加用户集合。

这对我有用。