Tag: node mongodb native

节点mongodb:错误:连接由于parseError而closures

使用本地的“mongodb”NPM包,我收到 Error: connection closed due to parseError 当做一个非常基本的查询时: collections.myCollection.findOne({id: someID}, function (err, repo) { … }) 奇怪的是,完全相同的查询之前运行。 每个查询的types都是相同的

通过ID删除logging?

为什么我不能通过_id删除logging? 码: db.collection('posts', function(err, collection) { collection.remove({_id: '4d512b45cc9374271b00000f'}); });

在express.js中连接到Mongodb-Native-Driver

我在express.js应用程序中使用mongodb本地驱动程序。 我在数据库中有大约6个集合,所以我创build了6个js文件,每个文件都有一个作为javascript对象的集合(例如, function collection(){} ),原型函数处理这些集合的所有操作。 我认为这将是一个很好的build筑。 但是我遇到的问题是如何连接到数据库? 我应该在每个文件中创build一个连接并使用它们吗? 我认为这将是一个矫枉过正的问题,因为mongodb-native-driver中的连接创build了一个连接池,其中有几个连接是不合理的。 那么如何创build一个连接池并将其用于所有collections.js文件? 我想要像在mongoose中实现的连接。 让我知道,如果我的应用程序的体系结构的任何思维过程是错误的。 使用Mongoose可以解决这些问题,但是我已经在几个地方读过,它比native-driver慢,我也更喜欢一个无模式的模型。 编辑:我用模型创build了一个模块。 每个集合都在一个文件中,并将数据库作为参数。 现在在index.js文件中,我调用了数据库连接,并在从连接中获取数据库后保留了一个variablesdb。 ( 我使用了自动重新连接function来确保连接没有丢失 )。 在同一个index.js文件中,我像这样导出了每个集合 exports.model1 = require('./model1').(db) exprorts.model2 = require('./model2').(db) 这确保了数据库部分只在一个模块中处理,并且应用程序只会调用每个model.js文件导出的函数,如save() , fincdbyid()等等( whatever you do in the function is upto you to implement fincdbyid() whatever you do in the function is upto you to implement )。

蓝鸟Promisfy.each,for循环和if语句?

现在,父对象循环( m < repliesIDsArray.length )在第一个findOne触发之前完成,所以这全部只循环通过respondIDsArray.asynchronous的最后一个元素。 这个代码集的promisified版本的正确语法是什么? 对promisification新来说,想知道如何启动这个promisify +循环通过数组+帐户的if语句.. 蓝鸟是必需的,而Promise.promisifyAll(require("mongoose")); 叫做。 for(var m=0; m<repliesIDsArray.length; m++){ objectID = repliesIDsArray[m]; Models.Message.findOne({ "_id": req.params.message_id}, function (err, doc) { if (doc) { // loop over doc.replies to find the index(index1) of objectID at replies[index]._id var index1; for(var i=0; i<doc.replies.length; i++){ if (doc.replies[i]._id == objectID) { index1 = i; break; } […]

如何在node.js断开连接时cachingMongoDB插入?

我们读了一个XML文件(使用xml-stream ),大约有500k个元素,并且像这样插入到MongoDB中: xml.on(`endElement: product`, writeDataToDb.bind(this, "product")); 在writeDataToDb(type, obj)插入如下所示: collection.insertOne(obj, {w: 1, wtimeout: 15000}).catch((e) => { }); 现在,当Mongo连接断开连接时,xmlstream仍会读取,并且控制台会收到错误消息(无法插入,断开连接,EPIPE断开…)。 在文档中说: 当你closuresmongod进程时,驱动程序停止处理操作,并保持缓冲,因为bufferMaxEntries默认为-1,意味着缓冲所有的操作。 这个缓冲区实际上做了什么? 我们注意到当我们插入数据并closuresmongo服务器时,事情被缓冲,然后我们把mongo服务器备份起来,本地驱动程序成功地重新连接,并且节点恢复插入数据,但是缓冲文档(在mongo beeing offline期间)不被插入再次。 所以我质疑这个缓冲区及其用法。 目标: 我们正在寻找最好的方法来保持插入缓冲,直到mongo回来(在15000毫秒根据wtimeout ),然后插入缓冲的文件或使用xml.pause(); 和我们尝试没有成功的xml.resume() 。 基本上我们需要一点帮助,以便如何处理断开连接而不会丢失数据或中断。

如何检查一个集合是否存在于Mongodb本地nodejs驱动程序中?

我需要检查某个数据库上是否存在一个集合,如果不存在,就创build它。 我知道 db.createCollection(collName, {strict:true}, function(error, collection)) 在创build它之前检查收集collName存在并设置error对象。 但我需要一个独立的function来检查。

使用来自Mongo收集的二进制数据作为图像源

我有一个快速的应用程序,用mongo存储数据,使用Jade作为视图引擎。 我有一个简单的方法来获取特定集合中的文档,每个文档对应于一个产品。 该图像是base64编码。 当我尝试渲染图像虽然不起作用 我的路线是 exports.index = function(req, res){ mongo.getProducts(function(data) { res.render('consumer/index', {user: req.session.user, products: data}); }); }; 调用的函数是 exports.getProducts = function(callback) { Product.find().exec(function(err, products){ return callback(products); }); }; 然后我的Jade文件有以下代码 each val in products img(src="data:image/png;base64,'+#{val.image.data}+'", alt='Image', style="width: 20px; height: 20px") 在Mongo直接看文档(通过robomongo)我得到这个 我不知道我在想什么,因为在另一个文件中,我使用jQuery数据表来显示文档,并且在那里正确地呈现图像,这是一个数据表代码的片段 "aoColumns": [ {"mData": "name"}, {"mData": "price"}, {"mData": "category"}, {"mData": "description"}, {"mData": "image.data", "mRender": […]

为什么我会收到错误“尝试打开未closures的连接”?

我试图通过mongoose将我的节点应用程序连接到mongodb。 这似乎是工作,因为我可以添加文档,但我得到错误{ [Error: Trying to open unclosed connection.] state: 2 } 。 我创build了一个非常简单的应用程序,只是为了确保连接我的实际应用程序之前,一切工作正常。 这是我的简单的应用程序: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var timeSchema = new Schema({ timestamp: String }); var Time = mongoose.model('Time', timeSchema); mongoose.connect('mongodb://localhost/mydb'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error: ')); db.once('open', function () { var testA = new Test({ timestamp: […]