【问题标题】:Connect to MongoDB Atlas Cluster db with react-native app使用 react-native 应用程序连接到 MongoDB Atlas Cluster db
【发布时间】:2020-04-06 10:00:10
【问题描述】:

我很难理解如何从我的 react-native 应用程序连接到 MongoDB Atlas Cluster。我要做的基本上是从我的组件登录页面(用户名和密码)获取我的数据并连接到 Atlas Cluster db 以查看数据是否存在。

我正在使用 React Native 并使用 Expo 创建应用程序。我的登录页面打开,我输入了数据。

我想获取该数据,然后使用以下代码(来自 Atlas 站点连接字符串)进行连接和检查。

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://<userName>:<password>@testcluster1-dbdq3.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  client.close();
});

既然react-native建立了服务器,那还需要Express吗?我对此很陌生,所以我仍在尝试找出要使用的软件包。我是否还应该安装 mongoose 或 mongoDB 或两者都安装(来自 NPM)。我试图从基本的角度和所需的包来了解它是如何工作的。

我想从我的登录页面到数据库对我的用户 ID 和密码执行检查,以查看用户是否存在。如果用户没有,那么我会让他们填写一些信息并注册,这意味着将新用户写入我的数据库。

所以基本上,我需要了解以下代码逻辑:

  1. 通过我的应用程序连接到数据库以及何时执行此操作 连接(当应用加载或每次点击登录按钮时)
  2. 从我的用户名和密码中获取数据并搜索 atlas db 到 查看用户是否存在。如果是这样,则加载下一页。
  3. 如果用户名和密码不存在,那么我写新用户 和数据库密码。

谢谢

【问题讨论】:

    标签: javascript mongodb react-native mongoose expo


    【解决方案1】:

    我认为你应该按照这里 mongodb 建议的格式重写代码:

    https://mongodb.github.io/node-mongodb-native/api-articles/nodekoarticle1.html

    所以本质上:

        const MongoClient = require('mongodb').MongoClient;
    
        //make sure to check connection string is correct here, since this depends on the whether you are running standalone, replica, sharded cluster 
    
        const uri = "mongodb+srv://<userName>:<password>@testcluster1-dbdq3.mongodb.net/test?retryWrites=true&w=majority";
    
    
        MongoClient.connect(uri, { useNewUrlParser: true }, function(err, client) {
    
           if (err) {
    
                 //error
    
           } else {
    
                 var collection = client.db('test').collection('devices');
    
                 //client.close() should be called after you are done performing actions such as collection.update, etc.
    
           }
        });
    

    【讨论】:

      【解决方案2】:

      如果 Expo 与 RN (React Native) 一起使用,您可以将任何 npm 包与它一起使用,但您可能需要分离才能这样做。不幸的是,任何包含原生 iOS 或 Android 代码的 npm 包都不能与 Expo 一起使用。因为 MongoDB NPM 包刚刚在他们的文档中提到了 Node.js,这并不意味着它可以在 React Native 上运行。这就是为什么 MongoDB 制作了这个关于 JUST React Native 的页面https://docs.mongodb.com/realm/tutorial/react-native/

      您可能需要使用 Realm 包通过 React Native 连接到 MongoDB。

      【讨论】:

        猜你喜欢
        • 2019-05-27
        • 2021-11-09
        • 2020-09-27
        • 1970-01-01
        • 2019-09-04
        • 2021-01-05
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多