我的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
,该问题仍然存在。
如何解决与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)