我正在开发一个Ionic/Angular应用程序,我正在努力将其连接到我的MySQL数据库(mariadb)。我已经尝试了在网络上找到的几种解决方案,但我一直收到大量的错误消息。我正在寻求有关将MySQL数据库连接到Ionic/Angular应用程序的最佳方法的建议。对此问题的任何帮助都将不胜感激。
假设我的数据库位于服务器www.example.com上11.11.111.111,我的数据库名为products,我的表项名为items,我的密码是1234,我的用户名是海恩。
我已经创建了一个页面连接。服务
import { Injectable } from '@angular/core';
import { createPool, Pool } from 'mariadb';
@Injectable({
providedIn: 'root'
})
export class ConnectionService {
private pool: Pool = createPool({
host: '11.11.111.111',
user: 'hain',
password: '1234',
database: 'products',
connectionLimit: 5
});
constructor() { }
getItems(): Promise<any> {
return this.pool.getConnection()
.then(conn => {
return conn.query("SELECT * FROM items")
.then(rows => {
conn.release();
return rows;
})
.catch(err => {
conn.release();
throw err;
})
})
.catch(err => {
throw err;
});
}
}
我有页tab 2
import { Component, OnInit } from '@angular/core';
import { ConnectionService } from '../services/connection.service';
@Component({
selector: 'app-tab2',
templateUrl: 'tab2.page.html',
styleUrls: ['tab2.page.scss']
})
export class Tab2Page implements OnInit {
product: any;
constructor(private connectionService: ConnectionService) {}
ngOnInit() {
this.ConnectionService.getItems().then((data) => {
this.product = data;
}).catch((err) => {
console.log(err);
});
}
}
我得到这种类型的错误:
./node_modules/mariadb/lib/cmd/handshake/auth/caching-sha2-password-auth.js:2:11-24 - Error: Module not found: Error: Can't resolve 'fs' in …
[ng]
[ng] ./node_modules/mariadb/lib/cmd/handshake/auth/ed25519-password-auth.js:4:15-32 - Error: Module not found: Error: Can't resolve 'crypto' in …
我把它放在package.json上
"browser": {
"fs": false,
"net": false,
"tls": false,
"os": false,
"zlib": false,
"crypto": false
}
经过研究,我试图建立一个webpack.config.js,但没有成功。
我不是绝对希望继续我的道路,如果你有一个更有效或更安全的方式来操作mariadb数据库,我对所有的解决方案都持开放态度。
1条答案
按热度按时间gev0vcfq1#
很多开发者都会犯同样的错误:他们试图从前端直接连接到数据库。这是一个巨大的安全漏洞,无论是什么类型的项目,都不应该这样做。
您的数据库连接应该总是发生在后端(服务器端)。前端(或客户端)应该向服务器发送请求,要求从数据库中检索一些数据。然后,服务器应该从数据库中返回数据。这是唯一安全的方式。
现在,因为你似乎是新来的,我想我应该解释一下为什么。你的连接数据,如主机,用户和密码应该保密,只有网站的管理员才能访问。在前端将所有内容暴露给公众,允许每个人访问它们,从而连接到您的数据库。然后,有人删除或泄漏您所有的数据只是时间问题。
另外,如果你还不知道,网站的所有前端代码都可以被检查并免费下载和复制。只需点击鼠标右键,选择“检查”,在新打开的窗口中进入“源代码”选项卡,就可以了:所有的代码就在你眼前
至于错误,我真的不能告诉什么可能是问题。你确定你把你的
browser
的东西放在正确的文件,在根目录,而不是在任何其他字段?除此之外,我在这里没有用。另外,我在你的
ngOnInit
中发现了一个错字:它应该是this.connectionService
而不是this.ConnectionService
(注意大写C)。希望我能帮上忙。