使用node.js从mongoDB获取数据,连接正常,但没有显示数据

使用node.js从mongoDB获取数据,连接正常,但没有显示数据,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,因此,我使用node.js创建了一个应用程序,并将其连接到mongoDB,但没有显示任何数据,它只是显示并清空json数据文件[]。数据库名为sample\u geospatial,集合名为shipcrasks,所有ip地址都可以连接 为什么在浏览器中显示数据的任务没有成功 这是我的app.js 这是我的模型 这是我的文件 把它作为一个答案: 如果在api响应中看到的是[],而不是错误- 那么问题可能是你无法连接到正确的网络 集合名称(如果您确定集合中包含数据)或集合所在的正确db 因此,从您的

因此,我使用node.js创建了一个应用程序,并将其连接到mongoDB,但没有显示任何数据,它只是显示并清空json数据文件[]。数据库名为sample\u geospatial,集合名为shipcrasks,所有ip地址都可以连接

为什么在浏览器中显示数据的任务没有成功

这是我的app.js

这是我的模型

这是我的文件


把它作为一个答案:


如果在api响应中看到的是
[]
,而不是错误-

那么问题可能是你无法连接到正确的网络 集合名称(如果您确定集合中包含数据)或集合所在的正确db

因此,从您的数据库url:

'mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/test?retryWrites=true&w=majority'
 async function myDbConnection() {

    const url = mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/test?retryWrites=true&w=majority';

    try {
        await mongoose.connect(url, { useNewUrlParser: true });
        console.log('Connected Successfully')
        mongoose.connection.useDb('myDB'); // Switching happens here..
        /**
         * Do some DB transaction with mongoose models as by now models has already been registered to created DB connection
         */
    } catch (error) {
        console.log('Error connecting to DB ::', error);
    }
}
const dbUrl = mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/myDB?retryWrites=true&w=majority'
您已连接到
test
DB,因此您的DB是否存在您的收藏
海难
?如果没有,请在连接后尝试切换到实际数据库,或将url中的
test
替换为实际数据库名称

因此,默认情况下,当您从Atlas mongoDB获得url时,您将获得一个指向
test
db的url w.r.t。因此,在url上一次性替换它,或者您可以在连接到DB后使用
useDb
函数将其切换到代码Ex.:-

从代码切换DB的基本方式::

'mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/test?retryWrites=true&w=majority'
 async function myDbConnection() {

    const url = mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/test?retryWrites=true&w=majority';

    try {
        await mongoose.connect(url, { useNewUrlParser: true });
        console.log('Connected Successfully')
        mongoose.connection.useDb('myDB'); // Switching happens here..
        /**
         * Do some DB transaction with mongoose models as by now models has already been registered to created DB connection
         */
    } catch (error) {
        console.log('Error connecting to DB ::', error);
    }
}
const dbUrl = mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/myDB?retryWrites=true&w=majority'
或者您可以直接在url中使用类似的内容::

'mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/test?retryWrites=true&w=majority'
 async function myDbConnection() {

    const url = mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/test?retryWrites=true&w=majority';

    try {
        await mongoose.connect(url, { useNewUrlParser: true });
        console.log('Connected Successfully')
        mongoose.connection.useDb('myDB'); // Switching happens here..
        /**
         * Do some DB transaction with mongoose models as by now models has already been registered to created DB connection
         */
    } catch (error) {
        console.log('Error connecting to DB ::', error);
    }
}
const dbUrl = mongodb+srv://gockzor:***********@cluster0-boypg.azure.mongodb.net/myDB?retryWrites=true&w=majority'

如果在使用
res.json
发送数据之前将其记录到控制台,您是否看到
损坏的数据?如果您在api响应中看到
[]
而不是错误,则问题可能是您无法连接到正确的集合或存在集合的正确数据库,所以从你的
dburl
你已经连接到
test
,但是你的收藏
海难
就在这里吗?如果不是,请尝试切换到实际数据库或将url中的测试替换为实际数据库..将mongoose url中的测试替换为您的db名称,即示例\地理空间感谢快速回复,原因很简单:)我直接从mongoDB复制了连接字符串,没有意识到我必须在url中指定数据库:)