【问题标题】:Unable to fetch data from mongodb- atlas?无法从 mongodb-atlas 获取数据?
【发布时间】:2019-12-22 16:40:50
【问题描述】:

我正在尝试使用我手动提供给服务器的 note.js 从 MongoDB-atlas 获取数据。

MongoDB-atlas 服务器上的集合状态为:

数据库名称:viit 集合名称:viit_atts

另外,我已将我的 id 列入白名单,并且可以连接到服务器。

我首先使用以下命令连接到服务器:

mongoose.connect("mongodb+srv://wimpy_cool:myPassWordGoesHere@cluster0-phqid.mongodb.net/test?retryWrites=true&w=majority",{},function(err,res)
{
        if(err)
        {
            console.log("mongo lab server not connected");
            console.log(err);
        }
        else
        {
            // console.log(res);
            console.log("Connectd to mongolab db");
        }
});

现在我使用 mongoose 声明了架构并制作了模型,然后使用 find 函数获取数据。

var bodyParser = require('body-parser');
var mongoose =require("mongoose");
var express= require("express");
var app = express();

app.use(bodyParser.urlencoded({extended:true}));

    mongoose.connect("mongodb+srv://wimpy_cool:myPassWordGoesHere@cluster0-phqid.mongodb.net/test?retryWrites=true&w=majority",{},function(err,res)
    {
            if(err)
            {
                console.log("mongo lab server not connected");
                console.log(err);
            }
            else
            {
                // console.log(res);
                console.log("Connectd to mongolab db");
            }
    });


var viit_att_schema = new mongoose.Schema({
    name : String,
    no_of_present: Number,
    no_of_absent: Number
});

var att_history_schema = new mongoose.Schema({
    time : String ,
    att_stats : String,
});



var viit_att= mongoose.model("viit_att",viit_att_schema);

var att_history = mongoose.model("att_history",att_history_schema);

var list_of_all_members;
var list_of_all_members_sorted;

viit_att.find({},function(err,viit_atts)
{
    if (err) {
        console.log("OH NO ERROR");
    }
    else
    {
        console.log("fetching data now");
        console.log(viit_atts);
        list_of_all_members=viit_atts;
        // console.log(list_of_all_members[0]);
        // console.log(list_of_all_members);
        list_of_all_members_sorted = list_of_all_members.sort(function(a,b) {
                    return b.no_of_present - a.no_of_present ;
                });

        console.log(list_of_all_members_sorted);
    }
});

app.listen( process.env.PORT || 3000 , function(){
    console.log("SERVER 3000 HAS STARTED");
});

但提取似乎没有发生,控制台这样说:

D:\MY PROJECTS\WEB\club_attendence_website>node backend.js
(node:13076) DeprecationWarning: current URL string parser is deprecated, 
and will be removed in a future version. To us
e the new parser, pass option { useNewUrlParser: true } to 
MongoClient.connect.
SERVER 3000 HAS STARTED
Connectd to mongolab db
fetching data now
[]
[]

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-atlas


    【解决方案1】:

    尝试这样做:

    viit_att.find({}).then(content => {
    
            console.log("data was fetched");
            console.log(content);
            list_of_all_members=content;
            // console.log(list_of_all_members[0]);
            // console.log(list_of_all_members);
            list_of_all_members_sorted = list_of_all_members.sort(function(a,b) {
                     return b.no_of_present - a.no_of_present ;
                 });
    
            console.log(list_of_all_members_sorted);
    })
    .catch(err => { console.log("OH NO AN ERROR") })
    
    

    【讨论】:

    • 对不起,得到的结果和以前一样,仍然无法获取!
    【解决方案2】:

    您好,我遇到了同样的问题!

    问题: 我创建了一个mongoDb Atlas 集合名称是“main”;但是,当我使用mongoose 连接我的nodeJs 时,回调中的集合名称变为“mains”。

    解决方案: 我将我的模型名称更改为“mains”并且它起作用了。

    试试这个: ‍var viit_att= mongoose.model("viit_atts",viit_att_schema);‍

    【讨论】:

      【解决方案3】:

      问题是 MongoDB atlas 的默认连接字符串有一个默认的数据库名称为 test,并且会在集群中搜索相同的名称,因此即使它会连接,也不会获取任何内容。

      要了解如何明确提及 dbName,请参阅此链接:Fail to connect Mongoose to Atlas

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,对我有用的是在定义你的猫鼬模型时指定一个集合名称:

        module.exports = mongoose.model('App', schema,  COLLECTION_NAME)
        

        其中COLLECTION_NAME 必须与 mongodb atlas 集合名称匹配。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-09-15
          • 2018-02-18
          • 2020-08-22
          • 1970-01-01
          • 2020-02-29
          • 1970-01-01
          • 2020-10-12
          相关资源
          最近更新 更多