草庐IT

Mongoose-auth

全部标签

node.js - Mongoose 单元测试

我有以下Mongoose单元测试。article.save()回调中的控制台日志行打印出从数据库中保存后分配给实体的_id属性。但是,每当我在该行或相应单元测试的第一行放置断点时,该实体在文章集合中不可用?谁能解释为什么会这样?我正在努力理解这一点,非常感谢任何帮助!谢谢,马克。varapp=require('../../server.js'),should=require('should'),mongoose=require('mongoose'),User=mongoose.model('User'),Article=mongoose.model('Article');varuse

javascript - 为 Mongoose 运行多个 Mocha 测试文件被打破

根据AlexeyB.的评论,我修改了我的测试代码,并从我的测试代码中找到了导致相同错误的情况。当我尝试测试单个测试文件时,它运行良好。但是,如果我尝试同时测试多个测试文件,它就会损坏。常见的错误消息是Error:Tryingtoopenunclosedconnection.。看来我的数据库连接代码有一些问题。这是我修改后的代码。utils.js:varmongoose=require('mongoose');module.exports=function(models){returnfunction(done){for(variinmodels){models[i].remove({}

mongodb - 如何在实例方法中调用 mongoose 的 CRUD 方法

mongoosedocumentation显示此示例以创建一个新文档varTank=mongoose.model('Tank',yourSchema);varsmall=newTank({size:'small'});small.save(function(err){if(err)returnhandleError(err);//saved!})//orTank.create({size:'small'},function(err,small){if(err)returnhandleError(err);//saved!})我遇到的问题是我还没有Tank。我正在定义一个实例方法,我想在

mongodb - Mongoose 聚合不按输入日期过滤

我正在尝试构建一个聚合查询,但是当我将$match与日期一起使用时,它并没有像我预期的那样工作。如果我使用其他字段而不是任何Date字段,它会按预期工作。我使用的代码示例如下:constres=awaitReservation.aggregate([{$match:{createdAt:{$lte:req.endDate}}}]).exec();constres=awaitReservation.find({createdAt:{$lte:req.endDate}}).exec();第一行不工作,但第二行工作得很好。.find()和.aggregate()有什么区别。感谢您的帮助!

node.js - 当数据库再次可访问时,Mongoose 连接不会恢复

问题是Mongoose在以下情况下失去连接​​:NodeApp已启动,一切正常(可访问数据库等)本地运行的Mongo服务器进程(版本2.6.10)停止,然后在15秒后启动,一切似乎都很好(可访问数据库等)Mongo进程已停止。已发出对Express的请求,试图转到数据库(使用Mongoose)——如预期的那样无法访问。Mongo进程启动。发出相同的请求,即使Mongo已启动,也无法访问数据库。如果我重新启动NodeJS应用程序,一切正常。为什么对Mongo的失败查询(使用Mongoose版本4.4.5)会阻止在数据库进程再次启动时恢复连接?我们是否应该实现重试机制来尝试恢复连接,直到数

node.js - 如何通过 mongoose 虚拟字段查询找到 MongoDB 文档?

如何通过使用mongoose的“findOne”/“find”功能找到特定文档,其中的结果是通过虚拟字段过滤的,该字段实际上并未出现在数据库中?我会尝试进一步解释:在我的“用户”模型中,我有一个名为“电子邮件”的字段。我想为我的nodejs应用程序中的其他功能(主要是登录验证和其他内容)为“电子邮件”创建一个别名作为“用户key”。为了创建别名,我这样做了:userSchema.virtual('userkey').get(function(){returnthis.email;});现在,在创建别名后,我想按以下方式过滤我的搜索结果:restApi.post('/login',fun

node.js - Mongoose ,在模式(枚举)中定义一个 OR 引用?

thread=newmongoose.Schema({post:{type:Schema.Types.ObjectId,ref:'Post'},comment:{type:Schema.Types.ObjectId,ref:'Comment'},})但实际上,thread只能有post或comment,不能同时有。所以理想的定义应该是枚举之类的东西thread=newmongoose.Schema({data:{type:Schema.Types.ObjectId,ref:'Post'}OR??{type:Schema.Types.ObjectId,ref:'Comment'},})如

javascript - 防止 Mongoose 中的重复记录

我是MongoDb/Mongoose的新手,更习惯使用SQLServer或Oracle。我有一个相当简单的事件架构。EventSchema.add({pkey:{type:String,unique:true},device:{type:String,required:true},name:{type:String,required:true},owner:{type:String,required:true},description:{type:String,required:true},});我在看MongooseIndexes这显示了两种实现方式,我使用了字段定义。我还有一个非常

javascript - Mongoose :查找与输入相似的名称

我有一个正在处理的自动完成输入框,我正在尝试制作一个mongoose端点,它将根据输入的数据为我获取用户对象。数据可能不完整,但它仍然应该得到相似的所有内容。例如:varinput="st";//Shouldreturnauserobjectlikethisone.varuserObject={name:{full:'StephenBrinkworth',first:'Stephen',last:'Brinkworth'}};我已经调查了这个问题,据我所见,推荐的端点如下所示。User.find({name:{full:newRegExp(req.query.input,'i')}})

javascript - 为什么 mongoose.connect() 在不作为 mongoose 对象的方法存在时工作得很好?

给定以下代码:varmongoose=require("mongoose");console.log(mongoose);mongoose.connect("mydatabaseurlhere")如何一切正常-但mongoose对象没有附加任何connect()方法?这是console.log打印:Mongoose{connections:[NativeConnection{base:[Circular],collections:{},models:{},config:[Object],replica:false,hosts:null,host:null,port:null,user: