Как получить код mongodb для прямого изменения базы данных - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу разработать конечную точку, которая будет принимать команды MongoDB и запускать их непосредственно в базе данных, как это делает robomongo, и возвращать результаты. Это может быть что угодно (вставить, обновить, прочитать, удалить и т. Д.). Я использую мангуст, поэтому способ сделать это можно с помощью мангуста или чистого кода монго.

Я думал об использовании чего-то вроде:

let code = eval(stringOfMongoCode);
db.eval(code);

Но я подумал, что это должен быть лучший способ, потому что db.eval () устарела с версии 3.0, и в настоящее время я использую версию 3.6 mongo.

Есть идеи, как это сделать?

Редактировать 1: Это то, что я делал до сих пор. Это работает, и я смог запустить что-нибудь в базе данных и ответить результатами (я удалил некоторый код):

app.post('/v1/query', async function (req, res) {
    try {
        let code = `(function() { ${req.body.code} })`;
        code = eval(code);
        const mongoose = require("mongoose");
        const db = mongoose.connection.db;
        let result = await db.eval(code);
        res.status(200);
        return res.json(BaseController.buildResponse(true, 'Database code executed', null, result));
    } catch (err) {
        console.error(err);
        res.status(500);
        return res.json(BaseController.buildResponse(false, 'Error running your code on the database', err));
    }
});

Я все еще хотел бы улучшить свой код, не используя db.eval() и иметь возможность возвращать результаты чего-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...