【问题标题】:How to run mongo db script on remote server from nodejs script?如何从 nodejs 脚本在远程服务器上运行 mongo db 脚本?
【发布时间】:2018-07-16 18:20:15
【问题描述】:

我需要在 mongodb 上运行一些严重的读写操作。我想在远程 mongodb 服务器上使用 js 脚本来执行此操作,类似于此处询问的内容: How to run mongo db script on remote server?

答案是:

mongo -u user -p password mongodb01d.mydomain.com:27017/mydb yourFile.js

但是,我需要从 nodejs 代码运行它,因为我使用的是 Azure Functions,并且我没有运行 mongo 客户端二进制文件的环境。

所以我想现在如果做这样的事情是可能的:

MongoClient.connect(someUrl, function (err, client) {
    client.load("some script") // <-- Of course client.load doesn't exist.
});

我尝试了类似的 db.eval,但它是阻塞的。我想在后台运行任务并且不要阻塞我的 nodejs 脚本,就像在 shell 中运行时“load(...)”所做的那样。

谢谢!

【问题讨论】:

    标签: node.js mongodb azure-functions mongo-shell


    【解决方案1】:

    您可以在像 mongoose 这样的节点中使用 ORM 轻松连接到 mongo

    var mongoose = require('mongoose');
    mongoose.set('debug', true);
    mongoose.connect('mongodb://{YOUR_MONGO_URL}:{PORT}/{DB_NAME}', { useNewUrlParser: true }, (err) => {
        if (!err)
            console.log('mongo started');
    });
    

    【讨论】:

    • 正如帖子所说,我需要在 MongoDB 上运行冗长而繁重的进程,这意味着在服务器端运行的 asyc 进程,例如使用来自 mongo shell 的负载时:link。 ORM 如何做到这一点?
    • @LuisPabloLinietsky - 因此,nodejs 的工作方式将帮助您以非阻塞方式运行事物,使用 mongoose 将帮助您运行操作,而无需您手动管理 mongo 服务器。将所有内容链在 Promise 中,即., 所有 mongoose 都会调用 CRUD 操作,因此它将以非阻塞方式运行。尝试访问promisejs.org,他们有很好的解释
    猜你喜欢
    • 1970-01-01
    • 2018-03-14
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多