Tag: mongodb

mongoose自定义validation使用2个字段

我想使用mongoose自定义validation来validation,如果endDate大于startDate。 我如何访问startDate值? 当使用this.startDate时 ,它不起作用; 我弄不明白 var a = new Schema({ startDate: Date, endDate: Date }); var A = mongoose.model('A', a); A.schema.path('endDate').validate(function (value) { return diff(this.startDate, value) >= 0; }, 'End Date must be greater than Start Date'); diff是比较两个date的函数。

模拟/testingMongodb数据库Node.js

我正在学习nodejs,我有一个mongodb数据库,我必须与之交互。 我目前正在考虑使用mocha作为unit testing框架,zombie.js作为验收testing框架。 我想知道我怎么能做全面的接受testing,哪些击中了mongodb数据库。 有没有一个框架/模块可以帮助用testing数据库replace数据库,或者mocha或zombie.js是否具有可以轻松替代数据库的function。 在创build数据库对象时,还有一个类似于工厂(而不是灯具)的框架。 我在rails领域遇到的一个类似的概念是在rspec中,有一个spec_helper.rb文件,它在testing运行之前运行,它设置项目configuration以决定运行testing时要打哪个数据库。 在testing运行之前,它使用database_cleaner清理testing数据库。 对于工厂来说,我曾经使用过Factory Girl来再次在rails世界中从数据库模式创build工厂对象。 谢谢

NodeJS + Mongodb性能问题

我有一个nodejs + mongodb应用程序连接如下所示: var dbConfig = new mongo.Server(config.db.host, config.db.port, {auto_reconnect: true, poolSize: 20}); var db = new mongo.Db(config.db.name, dbConfig); 当使用apache ab进行基准testing时,发现当并发连接数大于20(甚至2个或更多的并发连接似乎线性增加时间)时,它会挣扎(时间> = 1秒): [ { "key": "mongoQuery1", "min": 2, "max": 598, "mean": 387.60683760683764, "sd": 134.56045668980255, "variance": 18106.51650456823 }, { "key": "mongoQuery2", "min": 8, "max": 149, "mean": 73.14120370370358, "sd": 25.141715811881994, "variance": 632.1058739654371 }, … ] 以上是我用来捕获节点应用程序分析信息的性能分析服务器的输出。 […]

适用于Express + MongoDB的最佳会话存储中间件

我正在寻找最好的中间件来存储MongoDB中的会话数据,以便在使用express的生产应用程序中使用? 我一直在环顾四周,发现这一点: session-mongoose ( https://github.com/donpark/session-mongoose )根据作者的评论,这不是生产就绪的原因如下: testing不足 零优化 有更好的select比MongoDB会话存储 connect-mongo ( https://github.com/kcbanner/connect-mongo ) express-session-mongo ( https://github.com/davglass/express-session-mongo ) 基于这些类 Sencha连接内存存储 ciaranj的快速会议mongodb connect-session-mongo ( https://github.com/bartt/connect-session-mongo ) 我一直在看他们的代码,我试图find一个性能comparisson文章。 你们有经验来推荐哪一个最好?

同步连接到MongoDB

我想先连接到mongodb,然后在我的应用程序中运行其他任何东西。 要做到这一点,我必须写下如下内容: MongoClient.connect("mongodb://localhost/test", function(err, connection) { if (err) { console.error(err); } db = connection; var app = express(); // Include API V1 require("./apiv1.js")(app, db); app.listen(3000, function(err) { if (err) { console.error(err); } else { console.log("Started on *:3000"); } }); }); 这使得我的应用程序在.connect函数中被完全缩进。当我在处理我的项目时,这看起来很丑并占用空间。 我认为最好的解决scheme是使MongoDB连接同步(即使因为数据库连接我的应用程序无法工作,为什么我应该在连接时做些什么),然后运行我的代码的其余部分。 我能怎么做?

整合Node.js和Backbone.js

我已经在Node.js和Backbone.js上做了大量的阅读, 我已经阅读了一些教程,并完成了Code School的相关课程。 我觉得我已经对Web应用程序中的每种技术所提供的function有了很好的了解。 我的问题是我真的不知道如何整合这两种技术并将它们串联使用。 我真的很感激,如果有人能指出我的资源,通过使用Node,MongoDB和Backbone的应用程序的整个开发一起。 非常感谢

你知道nodeJS中的mongoDB的任何教程吗?

我刚刚开始使用nodeJS,并不太了解它。 我还发现了mongoDB,我想在我的项目中使用它。 我search了一个教程,但也有所有的例子,我不完全明白。 你知道任何教程可以帮助我吗? 谢谢

在Node.js中创build同步MongoDB查询的正确方法是什么?

我正在使用MongoDB的Node.JS驱动程序,我想执行一个同步查询,就像这样: function getAThing() { var db = new mongo.Db("mydatabase", server, {}); db.open(function(err, db) { db.authenticate("myuser", "mypassword", function(err, success) { if (success) { db.collection("Things", function(err, collection) { collection.findOne({ name : "bob"}, function(err, thing) { return thing; }); }); } }); }); } 问题是,db.open是一个asynchronous调用(它不会阻塞),所以getAThing返回“未定义”,我希望它返回查询的结果。 我敢肯定,我可以采取某种阻断机制,但是我想知道正确的做法。

为什么我们需要,使用mongoose有什么好处

我刚刚开始使用mongodb ,最近我通过了一个ODM框架Mongoose 。 在文档上,我找不到为什么我们需要使用Mongoose 。 我可以给的一个原因是我们可以从Mongoose定义应用程序模式。 我正在寻找更多可能的原因,需要吸引我使用Mongoose 。 请列出为什么要使用Mongoose所有可能的优点和原因/需求。

使用Mongoose(MongoDB)查询嵌套文档

我从mongodb开始,努力查询嵌套的文档。 我有两个模式: var LinkSchema = new mongoose.Schema({ url: String, name: String }); var UserSchema = new mongoose.Schema({ name: String, links: [LinkSchema] }); 正如你所看到的,我只是搭build一个简单的书签工具。 每个用户都有一个名称和一组链接。 每个链接都有一个名称和一个url。 现在,我想要做的是,例如,看看某个链接是否已经存在于某人的链接数组中。 我想能够做这样的事情(试图获得弗拉德的链接集合,然后看看查询链接是否已经属于集合或不): app.get("/:query", function(req, res){ User.findOne({"name":"vlad"}, function(err, user){ user.links.find({"url":req.params.query}, function(err, foundLinks){ if(foundLinks){ res.send("link already exists!"); } else { res.send("link doesn't exist!"); } }); }); }); 当然,这段代码不起作用,因为显然我不能做一个“user.links.find()”。 我想我可以只做一个user.links.map来提取只有url,然后运行一个成员资格查询。 但是我认为这样做远不是正确的解决办法。 有一种方法可以使用数据库查询本地执行此类操作。 有人可以帮忙吗? […]