草庐IT

mongoose-middleware

全部标签

mongodb - Mongoose - 更新模型的实例方法,这是好的做法吗?

我正在使用一些Mongoose模型instancemethods试图封装一些业务逻辑,而不是散布在我的应用程序中。一个例子:MySchema.methods.doSomethingAndUpdateCount=function(somedata){//Dosomethingtomodelhereusingsomedatathis.someCount++;this.save();};虽然我今天又看了一遍,但我不确定这是不是一个很好的做法。一方面,它并没有真正为使用它的应用程序部分提供处理错误的方法。也许问题出在this.save();-也许这不应该在实例方法中,而是由方法的使用者调用。所

javascript - 在 Mongoose 中返回关联数组而不是文档数组

假设我有一个具有此架构的Word模型varWord=newSchema({name:{type:String,required:true},disambiguation:String,partOfSpeech:{type:ObjectId,ref:"PartOfSpeech",required:true},attributes:[{type:ObjectId,ref:"Attribute"}],root:[{type:ObjectId,ref:"Word"}],language:{type:ObjectId,ref:"Language",required:true}});我想执行一个返

javascript - 对象属性上的 Mongoose findOne

我有一个Mongoose模式如下varuser_schema=newSchema({reset:{type:Schema.Types.Mixed,required:true}});reset被赋予一个像这样的对象存储在数据库中{id:23,name:'something'}我想根据重置对象中的id查找文档。这是我尝试过的方法,但我从未得到返回结果。models.Users.findOne({'reset.id':id},function(err,user){//userisnull});Mongoose可以进行这样的查找吗? 最佳答案

javascript - Mongoose :如何替换子文档数组?

我已经使用mongoose设置了一个用户模式,其中包含一个子文档“联系人”。子文档“联系人”是联系人对象的集合,其中包含实际联系人(对另一个用户对象的引用)和一些与“友谊”相关的数据。在我的前端应用程序中,我现在可以通过在我的联系人列表中添加或删除用户来管理联系人。前端将这些更改保存为对服务器的HTTPPUT请求。PUT请求包含整个用户对象,它或多或少地替换了数据库中的用户对象。不幸的是,无法替换子文档集合。您只能推送新的或删除它们。这是模式:varUserSchema=newMongoose.Schema({username:{type:String,index:{unique:tr

node.js - Mongoose 从嵌套文档中删除

我有以下两个模式和模型:varCustomer=newSchema({name:String,jobs:[{type:Schema.Types.ObjectId,ref:'Job'}]});varJob=newSchema({title:String,customer:{type:Schema.Types.ObjectId,ref:'Customer'}});varCustomerModel=mongoose.model('Customer',Customer);varJobModel=mongoose.model('Job',Job);工作文档通过_id引用客户文档,客户文档还包含所

node.js - 在 Mongoose 中,如何过滤对象数组

我有以下架构:varsampleSchema=newSchema({name:String,dates:[{date:Date,duration:Number}]});我需要根据以下规则过滤记录:如果其中一个日期晚于给定日期date_begin,则保留记录,否则不保留。我的印象是$gte或$lte是我需要的功能,但我找不到正确使用它们的方法。我试过了sampleSchema.find({date_begin:{$gte:'date'}});或者它的一些变体,但我似乎无法让它工作。任何人都知道我应该如何做到这一点? 最佳答案 查询数组

node.js - 虚拟字段上的 Mongoose 正则表达式

我想运行正则表达式以在我的用户架构中的虚拟字段上实现“LIKE”类型的功能。以下语句适用于所有字段except*fullName*varsearchString=stringUtils.removeMultipleSpaces(stringUtils.stripSpecialCharacters(req.param('searchString')));varregex=newRegExp(searchString);varquery=User.find().or([{'firstName':{$regex:regex}},{'lastName':{$regex:regex}},{'us

mongodb - Mongoose 临时计算字段

对于一个基本示例,我有一个架构:vartestSchema=newSchema({op1:Number,op2:Number});然后我想要一个“总计”字段,它不存储在数据库中,而是在检索后自动计算,并且可能可以用于Mongoose的query.sort。即total=op1+op2然后使用myTestModel.find({}).sort(total).execFind(...);这可能吗? 最佳答案 MongoDB不允许您使用普通查询来计算字段,但是,您可以使用聚合框架来执行此操作。你会这样做:myTestModel.aggre

node.js - 如何使用 Mongoose 将查询结果返回给变量

我仍处于Node.js和Moongoose的学习阶段,我有一个场景在我从表单提交中获取值(ABC)。它是用户名然后我在用户集合中搜索那个名字(用户)使用ref获取该用户并在另一个模式(文章)中写入其ObjectID。我的逻辑:article.owner=User.findOne({'name':'ABC'}).exec(function(err,user){returnuser})但它没有返回结果。我引用了其他一些答案并尝试了async.parallel但我仍然无法将ABC用户的objectID保存在article.owner的文章架构中,我总是得到null。请建议我任何其他更好的方法

javascript - 如何从 Mongoose 查询回调中访问特定值?

先简单介绍一下情况。我有一个装满文档的MongoDB集合。我使用schema.statics查询特定行TweetSchema.statics.maxAndLimit=function(screen_name,cb){this.find({'user.screen_name':screen_name}).sort({'id_str':1}).select({'id_str':1,'user.statuses_count':1,'user.screen_name':1,'_id':0}).limit(1).exec(cb);};查询完成后,它会调用回调(cb)。在回调中,我想将值绑定(bi