将nodejs MongoDB连接代码移动到另一个文件

查尔斯

将数据库连接代码移动到另一个 nodejs 文件,没有返回连接对象。

我可以在 nodejs 中将数据写入 MongoDB。所有数据库连接代码都写在一个 .js 文件中。

现在我尝试将db连接代码分离到另一个.js文件中,现在似乎无法成功建立连接。

这是 1 .js 文件中的工作代码:

  const mongoDBIP = '192.168.1.71';
  const mongoDBPort = 27017;

  const mongo= require('mongodb').MongoClient;
  const mongoURL = 'mongodb://<mongo admin>:<password>@'+`${mongoDBIP}`+':'+`${mongoDBPort}`;

  ...

    mongo.connect(mongoURL, { useNewUrlParser: true, useUnifiedTopology: true }, (err, db) => {
    if (err) {}

    var dbo = db.db(<databaseName>);

    var collection = dbo.collection('messages');

    collection.insertOne(message, (err, result) => {
            if (err) {}
    })

  ...

现在我把它分成 2 个 .js 文件:

  var _mongo = require('./mongodb.js');

  var mongoDBO = _mongo.mongoDBO;

  ...

    var dbo = mongoDBO('feathers');

    console.log('DBO:' + dbo);   <-- here, dbo is NULL

    var collection = dbo.collection('messages');

    collection.insertOne(message, (err, result) => {
            if (err) {}
    })

  ...

下面是 mongodb.js 的内容:

  // mongodb.js

  const mongoDBIP = '192.168.1.71';
  const mongoDBPort = 27017;

  const mongoClient = require('mongodb').MongoClient;
  const mongoURL = 'mongodb://<mongo admin>:<password>@'+`${mongoDBIP}`+':'+`${mongoDBPort}`;


  function mongoDBO(database) {

    var dbo;

    mongoClient.connect(mongoURL, { useNewUrlParser: true, useUnifiedTopology: true }, (err, dbase) => {
            if (err) {}
            dbo = dbase.db(database);   <-- here, dbo is NULL
    });

    return dbo;
  }

  module.exports = Object.freeze({
      mongoDBO
  });

我希望 mongodb.js 中的对象“dbo”不会是 NULL,但它是。这发生在 nodejs v10.x 和 v12.x 下。

汤姆·鲍特尔

您正在尝试返回一个尚不存在的值。在调用回调函数之前不会设置 dbo。原始函数此时已经返回。

您必须更改 mongodb.js 文件以导出接受回调的函数,并在准备好时将 dbo 传递给该回调。

我建议阅读回调和异步编程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将代码移动到另一个项目后,自定义字体未在 SwiftUI 项目中加载?

如何修复代码以将已经存在的文件移动到另一个目录?

将文件移动到另一个分支

将某些字符从一个文件移动到另一个文件

将大文件从一个 Google 帐户移动到另一个?

Git 将文件从 1 个分支移动到另一个分支

仅将目录中的最后8个文件移动到另一个目录

如何将文件移动到vscode中的另一个文件夹?

如何将文件移动到PHP中的另一个文件夹

是否可以将Skype的文件/年表移动到另一个文件夹?

如何使用Java将文件移动到另一个文件夹?

批处理文件以将文件夹移动到另一个

如何使用 Bash 脚本将 txt 文件的内容移动到另一个文件?

将文件移动到磁盘上的另一个文件夹-Visual Studio

批量将文件移动到Windows中的另一个文件夹/目录?

批量将特定模式的文件移动到另一个文件夹

使用sudo将文件夹移动到另一个文件夹

如何将Google图表颜色设置从文件移动到另一个文件

将文件移动到 Git Bash 上的另一个文件夹

如何将数据库移动到mongodb中的另一个分片

Mongodb如何将特定对象从数组移动到另一个数组?

试图将 e2e 代码移动到一个函数中但没有成功

Shell:将文件一个一个地移动到另一个目录

将Repo文件夹从一个项目移动到另一个项目,以保留代码历史记录-Azure DevOps

将 CollectionViewCell 移动到另一个部分

将数据移动到另一个表

将服务移动到另一个分区

以编程方式将项目从一个可排序的已连接列表移动到另一个

如何将文件从默认目录移动到另一个目录?