Access mongodb+nodjs from javascript?



我正在运行一个带有nodejs+mongodb:的服务器

let MongoClient = require('mongodb').MongoClient.connect("mongodb://localhost:27017/mydb", { useNewUrlParser: true } ),
(async () =>{
let client;
try {
client = await MongoClient;
...

我正在创建一些数据可视化,我需要一种简单的方法来从javascript访问我的后端数据,这可能吗?理想情况下,我希望完全访问。

您必须建立一个桥接,例如使用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();
}

注意:我希望你知道,如果你没有正确验证请求/添加身份验证,你也会允许一些陌生人玩你的数据库。

出于安全目的,您应该永远不要这样做,但假设您可以在节点应用程序上创建AJAX端点或WebSockets服务器,将输入直接传递给mongoDB,并将输出直接带回客户端。

使用AJAX请求或WS编写一个简单的API,以防止用户破坏数据库,这将是一种更好的做法。

最新更新