Tag: mongoose

有一个mongoose连接错误callback

如果mongoose不能连接到我的数据库,我怎么能设置error handling的callback? 我知道 connection.on('open', function () { … }); 但是有没有像 connection.on('error', function (err) { … }); ?

僧侣与mongoose为Mongodb

我正在学习NodeJs。 为了从NodeJS连接和使用MongoDB,我看到很多使用Monk或Mongoose的例子。 这两个库是否相同? 他们有相同的function,还是他们每个人都有特定的目的? 作为NodeJS的初学者,我应该使用哪一个? 下面是一些使用Monk的代码示例: var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/nodejsapp'); —- exports.userlist = function(db) { return function(req, res) { var collection = db.get('users'); collection.find({},{},function(e,docs){ res.render('userlist', { "userlist" : docs }); }); }; }; 这里是一个使用Mongoose的示例: var mongoose = require('mongoose'); —- mongoose.connect('localhost', 'test'); var db = mongoose.connection; db.on('error', console.error.bind(console, […]

Mongoose的$或条件查找方法无法正常工作

最近我开始使用MongoDB和Nodejs上的Mongoose。 当我使用$or condition和_id字段的Model.find方法时,Mongoose无法正常工作。 这不起作用: User.find( { $or:[ {'_id':param}, {'name':param}, {'nickname':param} ]}, function(err,docs){ if(!err) res.send(docs); }); 顺便说一句,如果我删除'_id'部分,这是否工作! User.find( { $or:[ {'name':param}, {'nickname':param} ]}, function(err,docs) { if(!err) res.send(docs); }); 而在MongoDB shell中,两者都正常工作。

处理Mongoose中的模式更改

随着应用程序的发展,更新/迁移Mongoose模式的最佳实践(或工具)是什么?

如何得到mongoose模型的所有计数?

我怎样才能知道数据已保存的模型的数量? 有一个Model.count()的方法,但它似乎没有工作。 var db = mongoose.connect('mongodb://localhost/myApp'); var userSchema = new Schema({name:String,password:String}); userModel =db.model('UserList',userSchema); var userCount = userModel.count('name'); userCount是一个对象,哪个方法可以得到一个真正的count ? 谢谢

passport.js passport.initialize()中间件未被使用

我正在使用express + mongoose的节点,并尝试使用passport.js和restful api。 validation成功后,我一直收到这个exception(我在浏览器上看到了callbackurl): /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/utils.js:419 throw err; ^ Error: passport.initialize() middleware not in use at IncomingMessage.req.login.req.logIn (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/http/request.js:30:30) at Context.module.exports.delegate.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/middleware/authenticate.js:194:13) at Context.actions.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/context/http/actions.js:21:25) at verified (/Users/naorye/dev/naorye/myproj/node_modules/passport-facebook/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:133:18) at Promise.module.exports.passport.use.GitHubStrategy.clientID (/Users/naorye/dev/naorye/myproj/config/passport.js:91:24) at Promise.onResolve (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8) at Promise.EventEmitter.emit (events.js:96:17) at Promise.emit (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38) at Promise.fulfill (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:92:20) at /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/query.js:1822:13 我读过,我应该把app.use(passport.initialize()); 和app.use(passport.session()); 在app.use(app.router);之前app.use(app.router); 这就是我所做的。 这是我的express.js注册中间件: var express = require('express'), mongoStore = […]

Mongoose和单个node.js项目中的多个数据库

我正在做一个包含子项目的Node.js项目。 一个子项目将有一个Mongodb数据库,Mongoose将用于包装和查询数据库。 但问题是 Mongoose不允许在单个mongoose实例中使用多个数据库,因为模型是在一个连接上构build的。 为了使用多个mongoose实例,Node.js不允许多个模块实例,因为它在require()具有caching系统。 我知道在Node.js禁用模块caching,但我认为这不是一个好的解决scheme,因为它只需要mongoose。 我试图在mongoose中使用createConnection()和openSet() ,但这不是解决scheme。 我试图深入复制mongoose实例( http://blog.imaginea.com/deep-copy-in-javascript/ )传递新的mongoose实例到子项目,但它RangeError: Maximum call stack size exceeded 。 我想知道是否有任何使用mongoose或任何解决方法为这个问题使用多个数据库? 因为我认为mongoose是相当容易和快速的。 或者其他任何模块作为build议?

我怎样才能用mongoose产生一个ObjectId?

我想用Mongoose生成一个MongoDB ObjectId 。 有没有办法从Mongoose访问ObjectId构造函数?

一旦你完成,正确closuresmongoose的连接

我在一个脚本中使用mongoose,它并不意味着连续运行,而且我面对的似乎是一个非常简单的问题,但我找不到答案。 简单地说,一旦我打电话给任何发送请求mongodb的函数,我的nodejs实例永远不会停止,我必须用Ctrl + c或Program.exit()手动杀死它。 代码大致如下所示: var mongoose = require('mongoose'); // if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ? mongoose.connect('mongodb://localhost:27017/somedb'); // define some models // if I include this line for example, node […]

如何用2d geo索引正确定义Mongoose模式中的数组对象

我目前在为下面的文档创build模式时遇到问题。 来自服务器的响应总是以“对象”的forms返回“trk”字段值。 不知何故,我不知道这应该如何工作,因为我至less尝试了所有对我有意义的方法;-) 如果这有帮助,我的Mongoose版本是3.6.20和MongoDB 2.4.7而在我忘记之前,它也将很好设置为索引(2d) 原始数据: { "_id": ObjectId("51ec4ac3eb7f7c701b000000"), "gpx": { "metadata": { "desc": "Nürburgring VLN-Variante", "country": "de", "isActive": true }, "trk": [ { "lat": 50.3299594, "lng": 6.9393006 }, { "lat": 50.3295046, "lng": 6.9390688 }, { "lat": 50.3293714, "lng": 6.9389939 }, { "lat": 50.3293284, "lng": 6.9389634 }] } } mongoose纲要: var TrackSchema = Schema({ _id: […]