我使用Electron JS
、SQLite
和React JS
构建了一个桌面应用程序。
桌面应用程序允许管理员添加、删除和检索客户端,它连接到存储客户端信息的SQLite
数据库。它使用SQL查询来执行以下操作:
//Add a client to the db
exports.addClient = (client) => {
db.prepare(
"INSERT INTO clients (name, phone , position, description) VALUES (?,?,?,?)"
).run(clients.name, clients.phone, clients.position, clients.description);
};
正如您所看到的,我没有在这里创建任何REST API。
现在,我想构建一个移动的应用程序,但针对客户端(使用React Native
),它应该能够显示存储在DB中的客户端信息。
我的问题是如何将移动的应用连接到数据库以获取客户端的数据?我是像在桌面应用中那样编写SQL查询,还是必须创建REST API然后获取数据?
1条答案
按热度按时间pgpifvop1#
移动的应用程序实际上使用与桌面应用程序相同的数据库,因此无论是在移动设备上还是在桌面上,数据库记录中的任何更改都会反映在所有连接的设备上。
对于您的问题(如果我错了请纠正我),我相信您正在尝试将移动的应用程序连接到与桌面应用程序托管在同一台计算机上的数据库。如果是这样,则您需要使用公共IP地址创建到数据库的连接。
Here's a drawing
这种方法的缺点是,由于您的数据库将是公开访问的,它将容易受到拒绝服务攻击,而且,您的客户端直接与数据库对话,这使得伸缩成为一个问题。如果您不担心这些类型的问题,或者创建这样做只是为了学习,那么我不认为直接连接到数据库有任何问题。
通过API,您可以为所有设备提供一个通用的交互接口。您的桌面和移动的应用可以连接到API,然后API可以直接与数据库通信。这将允许您将通用CRUD功能从两个应用移到API。如果您计划在未来添加更多设备,这也会使扩展变得更容易。
至于如何在react native中编写数据获取函数,我认为这些帖子可能会有所帮助:
Trying to fetch data from a remotely-hosted MySQL database, using React Nativehttps://dev.to/saulojoab/how-to-get-data-from-an-mysql-database-in-react-native-53a4