无法在admin API上执行原始查询在MongoDB Atlas上不起作用

时间:2020-09-02 03:47:57

标签: node.js mongodb heroku mongodb-atlas

我的api服务器使用Node.js编写,数据库为MongoDB

API在我的本地设备上运行正常。

当我将相同的数据推送到MongoDB Atlas并将api服务器推送到Heroku

MongoDB version 4.2

调用API会收到错误消息

{"error":"cannot do raw queries on admin in atlas"}

API: https://movie-with-atlas.herokuapp.com/api/getTwRanking

我的有关连接到MongoDB Atlas的API服务器代码:

const mongoose = require('mongoose');

if (process.env.NODE_ENV !== 'test') {
    // MongoDB Atlas
    mongoose.connect('mongodb+srv://myAccount:myPassword@cluster0.vcwmp.mongodb.net/movietogo?retryWrites=true&w=majority' , { useNewUrlParser: true });

    // if connect with my local API is fine
    // mongoose.connect('mongodb://localhost/movietogo');
}

我已经在MongoDB Atlas上检查了我的网络访问权限,将0.0.0.0/0 (includes your current IP address)设置为Heroku,该问题仍然存在。

enter image description here

如何解决与MongoDB Atlas的连接问题?谢谢。

它来自我的API代码:

我搜索集合TwRanking,发现对象键theater是TwRanking

getTwRanking (req, res, next) {
    console.log('check getTwRanking');
    const cityCollection = mongoose.model("TwRanking", MovieSchema, "TwRanking");

    cityCollection.find({ "theater": "TwRanking" })
         .then(movie => res.send(movie))
         .catch(next);
},

我想它捕获了错误。

如果看答案MongoError: cannot do queries on admin in atlas

这样更改连接代码

mongoose.connect('mongodb://myAccount:myPassword@cluster0-shard-00-00.vcwmp.mongodb.net:27017,cluster0-shard-00-01.vcwmp.mongodb.net:27017,cluster0-shard-00-02.vcwmp.mongodb.net:27017/movietogo?ssl=true&replicaSet=cluster0-shard-0&authSource=admin');

我会收到错误消息:

GET https://movie-with-atlas.herokuapp.com/api/getTwRanking 503 (Service Unavailable)

0 个答案:

没有答案