javascript - 如何将 mongoDB 对象传递给 Javascript/JS.Node 中的所有原型(prototype)函数?

标签 javascript node.js mongodb function-prototypes

我将 NodeJS 与 MongoDB 一起使用,并且在将 mongoDB 对象传递给我的所有原型(prototype)函数时遇到一些问题。我不明白如何在这些原型(prototype)之间传递这个对象。也许有人可以指出我正确的方向?

在我的主文件中,我创建了 mongoDB 对象的一个​​新实例,其中包含我想要用于处理 mongoDB 的所有原型(prototype)。然后我使用原型(prototype)函数来连接并创建一个新集合。

Main.js

var mongo = require('./database/mongoDB')
var mongoDB = new mongo();
// Connect to database
mongoDB.ConnectDB(dbPath);
// Create a collection
mongoDB.CreateNewCollection("Usernames");

原型(prototype)函数在 MongoDB.js 中定义

MongoDB.js
// Get mongoDB

var mongoDB = require('mongodb').MongoClient;
var DatabaseOperations = function () {}; // Constructor

DatabaseOperations.prototype.ConnectDB = function(dbPath){
// Connect to database
mongoDB.connect(dbPath, function(err, mongoDatabase) {
if(!err) {
  console.log("Connected to database: " + dbPath);
  mongoDB.database = mongoDatabase;
} else {
  console.log("Could not connect to database, error returned: " + err);
}
});
}

DatabaseOperations.prototype.CreateNewCollection =   function(collectionName){
mongoDB.database.createCollection(collectionName, function(err,  collectionName){
if(!err) {
  console.log("Successfully setup collection: " + collectionName.Username);
  mongoDB.collectionName = collectionName;
} else {
  console.log("Could not setup collection, error returned: " + err);
}
});
}

我能够连接到数据库,但从那时起,我不知道如何将数据库对象传递给其他原型(prototype)函数以创建集合或用它做任何其他事情。运行时收到的错误消息是这样的:

mongoDB.database.createCollection(collectionName, function(err, collection
TypeError: Cannot read property 'createCollection' of undefined

如何将数据库对象放入每个原型(prototype)函数中以供使用?

最佳答案

我看到您找到了替代解决方案,但我还是要发表评论。在构造函数中你应该做类似的事情

MongoDB.js
// Get mongoDB

var mongoDB = require('mongodb').MongoClient;
var DatabaseOperations = function () {}; // Constructor

DatabaseOperations.prototype.ConnectDB = function(dbPath){
// Connect to database
var that = this;
mongoDB.connect(dbPath, function(err, mongoDatabase) {
if(!err) {
  console.log("Connected to database: " + dbPath);
  that.database = mongoDatabase;
} else {
  console.log("Could not connect to database, error returned: " + err);
}
});
}

DatabaseOperations.prototype.CreateNewCollection =   function(collectionName){
this.database.createCollection(collectionName, function(err,  collectionName){
if(!err) {
  console.log("Successfully setup collection: " + collectionName.Username);
} else {
  console.log("Could not setup collection, error returned: " + err);
}
});
}

这样,您就可以将数据库分配给 DatabaseOperations,并且 DatabaseOperations 的每个原型(prototype)函数都可以通过 this.database 访问它。数据库现在是对象的属性。一般来说,不同的函数只能看到分配给“this”的内容(DatabaseOperations)。

关于javascript - 如何将 mongoDB 对象传递给 Javascript/JS.Node 中的所有原型(prototype)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970835/

相关文章:

node.js - Nodejs,mongodb - 使用 $nin 或 $in 作为对象 ID 或 _id

mongodb - 如何将序数位置传递到 Pymongo 中的更新文档中以进行 $inc 更新

json - 强制 mongodb 输出严格的 JSON

javascript - 单击时更改 javascript 中的类

javascript - 如何使用 budo(或 browserify)运行自定义 html 文件?

node.js - MongoDB $lookup 结果作为对象而不是数组

javascript - nodejs npm mysql返回单行句柄

javascript - 在 Javascript 中动态调用函数

javascript - 如何使这个 slider 具有鼠标悬停 Action ?

javascript - 递归迭代数组对象并返回连接的 id 数组