我正在使用nodejs + mongodb运行服务器:
let MongoClient = require('mongodb').MongoClient.connect("mongodb://localhost:27017/mydb", { useNewUrlParser: true } ),
(async () =>{
let client;
try {
client = await MongoClient;
...
我正在创建一些数据可视化,我需要一种简单的方法来从javascript访问后端数据,这可能吗?理想情况下,我想要完全访问权限。
答案 0 :(得分:3)
您必须搭建一座桥梁,例如使用REST API:
// server.js
// npm install express, body-parser, mongodb
const app = require("express")();
const bodyParser = require("body-parser");
const db = require("mongodb").MongoClient.connect(/*...*/);
app.use(bodyParser.json());
app.post("/findOne", async (req, res) => {
try {
const connection = await db;
const result = await connection.findOne(req.body);
if(!result) throw new Error("Not found!");
res.status(200).json(result);
} catch(error) {
res.status(500).json(error);
}
});
// ... all those other methods ...
app.listen(80);
这样,您可以轻松地在客户端上连接到它:
// client.js
function findOne(query) {
const result = await fetch("/findOne/", {
method: "POST",
body: JSON.stringify(query),
headers:{
'Content-Type': 'application/json'
}
});
if(!result.ok) throw await result.json();
return await result.json();
}
注意:我希望您知道,如果您没有正确验证请求/添加身份验证,还可以允许一些陌生人使用数据库。
答案 1 :(得分:1)
出于安全目的,您应该从不执行此操作,但是假设您可以在节点应用程序上制作一个AJAX终结点或WebSockets服务器,将输入直接传递给mongoDB并将输出直接返回给客户端
使用AJAX请求或WS编写简单的API以防止用户破坏您的数据库是一种更好的做法。