草庐IT

Mongoose-auth

全部标签

mongodb - 在 Mongoose 对象上创建锁

我有两个回调,它们经常使用mongoose修改同一个mongo对象。修改很复杂,以至于我无法在一次update()中轻松完成。结果,很多时候只应用了两个更新中的一个,我得到了一个[VersionError:Nomatchingdocumentfound.]错误。有没有什么方法可以显式锁定文档,以便每个更新都可以等待另一个完成,并且可以在不担心竞争条件的情况下发生? 最佳答案 Mongodb不支持对象锁定,但是您可以自己实现。你必须做出选择乐观的并发控制(当资源争用较少时)-这可以使用versionNumber或timeStamp字段

node.js - find() 的 Mongoose 默认过滤器/查询参数

如果我有一系列文档,例如:{type:'post',text:'example',status:'private'//or'public'}我可以使用哪种中间件或架构配置来确保默认情况下,Model.find()仅返回status!='private'的文档?我不想每次查询集合时都必须冗余查询status!='private'。感谢您的帮助! 最佳答案 您可以尝试为您的模型实现一个包装方法,例如findNonPrivate(),然后您可以委托(delegate)它查找每个status不等于的文档“私有(private)”。像这样:v

javascript - 切换到 Mongoose ,我不应该使用请求客户端吗?

我正在大致围绕此处找到的演示创建一个MEAN堆栈应用程序:https://github.com/angular-app/angular-app我是mongo的新手,但想在服务器端使用Mongoose,并注意到它当前使用请求客户端与数据库对话:代码:https://github.com/angular-app/angular-app/blob/master/server/lib/mongo-strategy.jsvarrest=require('request');...MongoDBStrategy.prototype.query=function(query,done){query.

node.js - 如何在 Mongoose Schema 方法中指定 `this`

我尝试在Mongoose中摆弄一下模式方法。我想知道如何从我正在使用的模式中调用信息,有点像使用this。我的架构如下所示:'usestrict';varmongoose=require('mongoose'),Schema=mongoose.Schema;varBuildingSchema=newSchema({name:String,info:String,level:{//Thecurrentlevelofthetemplate,defaultvalueis1type:Number,default:1},ressource:{//Ressouceslevel:[{gain:[{/

node.js - 转换 Mongoose find 函数返回的数组的结果

我已经在我的Schema的toObject中添加了一个转换函数来去除某些属性,并将_id的名称更改为id。当我使用findOne并对结果调用toObject时效果很好,但我也有一个find({},(err,items)=>{。..})命令。无法在数组上调用toObject。这是我的架构:varItemSchema=newSchema({version:{type:String,default:'1.0.0'},created:{type:Date,default:Date.now},modified:{type:Date,default:Date.now},properties:Sch

mongodb - 我应该在 mongoose 模式中使用混合数据还是单独数据?

如果我有一个订单模式,什么是更好的设计,这个:varschema=newSchema({name:String,timePlaced:Date,packageDimensions:{height:Number,width:Number,weight:Number}})或者这个varschema=newSchema({name:String,timePlaced:Date,height:Number,width:Number,weight:Number}) 最佳答案 没有令人信服的理由为如此少量的数据制作子文档。使用Mongoose,

node.js - Mongoose 在使用 mongolab uri 连接时出错?

它给出了以下错误-mongooseconnectionerror:{[MongoError:connectEINVAL]name:'MongoError',message:'connectEINVAL'}/home/user/Documents/oes/node_modules/connect-mongo/node_modules/mongodb/lib/server.js:228process.nextTick(function(){throwerr;})^Error:connectEINVALaterrnoException(net.js:905:11)atconnect(net.

angularjs - mongoose 中 $gt 的问题

我已经通过以下查询成功查询了我在mongoCLI中尝试的内容。db.catches.find({'weightTotal':{'$gte':150}})但是,当我尝试将查询从Angular发送到这样的路线时(更具体一点):Hatchery.getByLocation({'x':$scope.y.x._id,'city':place.data[0].city,'weightTotal':{'$gte':150}})当mongoose中的某些东西爆炸时,我得到了常见的错误:TypeError:Cannotcallmethod'toString'ofundefinedatServerResp

node.js - 如何使用mongoose.connect检查mongodb连接期间数据库是否存在?

我尝试使用mongoose.connect来检查数据库是否存在,mongoose.connect("mongodb://localhost:27017/notexistdb",function(err){if(err)console.log(err);});回调中没有错误信息,如何判断数据库是否存在。 最佳答案 你可以通过获取数据库列表轻松找到。varmongoose=require('mongoose'),Admin=mongoose.mongo.Admin;///createaconnectiontotheDBvarconnec

node.js - 如何取消 'pre' 钩子(Hook)中的 Mongoose 查询

我正在为我在特定模式上的“查找”查询实现某种缓存,并且我的缓存与前\后查询Hook一起工作。问题是如何正确取消“查找”查询?mySchema.pre('find',function(next){varresult=cache.Get();if(result){//cancelqueryifwehavearesultfromcacheabort();}else{next();}});为了实现这个promise?Model.find({..}).select('...').then(function(result){//Wecanreachhereandworkwiththecachedr