我将mongodb的node-mongodb-native驱动程序用于编写网站。
我有一个关于如何一次打开mongodb连接,然后在中的集合名称用户user.js
和中的集合名称帖子中使用它的问题comment.js
我想在其中打开数据库连接db.js
以为用户插入/保存数据并发布帖子
当前代码,我的 db.js
var Db = require('mongodb').Db,
Connection = require('mongodb').Connection,
Server = require('mongodb').Server;
module.exports = new Db(
'blog',
new Server('localhost', Connection.DEFAULT_PORT, {auto_reconnect: true})
);
我曾经db.js
在user.js
如下
var mongodb = require('./db');
function User(user){
this.name = user.name;
this.password = user.password;
this.email = user.email;
};
module.exports = User;
User.prototype.save = function(callback) {//save user information
//document to save in db
var user = {
name: this.name,
password: this.password,
email: this.email
};
mongodb.close();
//open mongodb database
mongodb.open(function(err, db){
if(err){
return callback(err);
}
//read users collection
db.collection('users', function(err, collection){
if(err){
mongodb.close();
return callback(err);
}
//insert data into users collections
collection.insert(user,{safe: true}, function(err, user){
mongodb.close();
callback(err, user);//success return inserted user information
});
});
});
};
和 comment.js
var mongodb = require('./db');
function Comment(name, day, title, comment) {
this.name = name;
this.day = day;
this.title = title;
this.comment = comment;
}
module.exports = Comment;
Comment.prototype.save = function(callback) {
var name = this.name,
day = this.day,
title = this.title,
comment = this.comment;
mongodb.open(function (err, db) {
if (err) {
return callback(err);
}
db.collection('posts', function (err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
//depend on name time and title add comment
collection.findAndModify({"name":name,"time.day":day,"title":title}
, [ ['time',-1] ]
, {$push:{"comments":comment}}
, {new: true}
, function (err,comment) {
mongodb.close();
callback(null);
});
});
});
};
您可以连接一次,然后根据需要重复使用多次:
var mongodb = require('mongodb');
var events = require('events');
var event = new events.EventEmitter();
var access = new mongodb.Server(host, port, { });
var client = null;
new mongodb.Db('YOUR DATABASE', access, { safe: true, auto_reconnect: true }).open(function (err, c) {
if (!err) {
client = c;
console.log('database connected');
event.emit('connect');
} else {
console.log('database connection error', err);
event.emit('error');
}
});
exports.get = function(fn) {
if(client) {
fn(client);
} else {
event.on('connect', function() {
fn(client);
});
}
};
然后重用它:
var db = require('./db');
var items;
db.get(function(client) {
items = new mongodb.Collection(client, 'collection');
});
// then anywhere in your code
db.get(function() {
// items.find({ ...
});
我正在处理一个节点。js服务器,连接到MongoDB,用TypeScript编写。当我尝试使用MongoDB时,它不会创建连接,但是当我检查mongo输出时,它似乎确实创建了连接。 在节点中定义连接的代码中缺少了什么。js? 我的连接字符串是 我的连接方式: Mongo输出: 2018-11-08T23:06:24.106 0100网络[监听器]连接从127.0.0.1:51345#11接受(2个
我正在使用带有MongoDB的Node-MongoDB本机驱动程序来编写一个网站。 我有一些关于如何管理连接的问题: > 对所有请求只使用一个MongoDB连接是否足够?是否存在性能问题?如果不是,我可以设置一个全局连接在整个应用程序中使用吗? 如果不是,如果我在请求到达时打开一个新的连接,并且在处理请求时关闭它,这是好的吗?打开和关闭一个连接是否昂贵? 我应该使用全局连接池吗?我听说驱动程序有一
问题内容: 我在MongoDB中使用node-mongodb-native驱动程序来编写网站。 我对如何管理连接有一些疑问: 仅使用一个MongoDB连接就可以处理所有请求是否足够?是否存在性能问题?如果没有,是否可以设置全局连接以在整个应用程序中使用? 如果没有,如果在请求到达时打开一个新连接,并在处理请求时将其关闭,那会很好吗?打开和关闭连接是否昂贵? 我应该使用全局连接池吗?我听说驱动程序具
MongoDB是一种文档导向数据库管理系统,由C++撰写而成。 本章节我们将为大家介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作。 如果你还没有 MongoDB 的基本知识,可以参考我们的教程:MongoDB 教程。 安装驱动 本教程使用了淘宝定制的 cnpm 命令进行安装: $ cnpm install mongodb 接下来我们来实现增删改查功能。 创建数据库 要
问题内容: 我的数据库中有大量的文档,我想知道如何浏览所有文档并更新它们,每个文档具有不同的值。 问题答案: 答案取决于您使用的驱动程序。我所知道的所有MongoDB驱动程序都以一种或另一种方式实现。 这里有些例子: mongojs 僧 猫鼬 在回调内部更新文档 在回调内部更新文档的唯一问题是您不知道何时更新所有文档。 要解决此问题,您应该使用一些异步控制流解决方案。以下是一些选项: 异步的 承诺
问题内容: 通过Node MongoDB本机驱动程序使用Nodejs和MongoDB。需要检索一些文档,并进行修改,然后将其保存回来。这是一个例子: 具有异步性质,如果更新文档的过程花费更长的时间,则当光标到达文档末尾时,数据库连接将关闭。并非所有更新都保存到数据库。 如果省略,则所有文档均正确更新,但应用程序挂起,永不退出。 我看到一则帖子建议使用计数器跟踪更新次数,当回落到零时,然后关闭数据库