Articles of mongoose

在填充调用之后模拟Mongoose对象

我试图嘲笑填充调用,我想嘲笑返回mongoose对象,而不是普通的JS对象。 sandbox.mock(BookModel) .expects('populate') .yields(null, [ new BookModel({ _id: mongoose.Types.ObjectId(), name: 'Mock Book', authorIds: [{ name: 'Foo', }] }) ]); 与模式: var BookSchema = new Schema({ name: { type: String, required: true, unique: true }, authorIds: [{type: Schema.Types.ObjectId, ref: 'Author'}], }); var AuthorSchema = new Schema({ name: { type: String, required: true, unique: true }, }); […]

mongoose“this.model不是一个函数”

这是我如何定义我的模式和架构方法。 const Schema = mongoose.Schema; const ItemSchema = new Schema({ type:String, brand:String, description:String, model:String, price:Number, createdAt:{type: Date, default: Date.now}, updatedAt:{type: Date, default: Date.now} }); ItemSchema.statics.findBrand = function(brand, callback){ // this == item return this.find({brand: brand}, callback); } ItemSchema.statics.findType = function(type, callback){ return this.find({type: type}, callback); } ItemSchema.methods.findSameBrand = function(cb){ return this.model("Item").find({brand: this.brand}, cb); } var […]

在mongodb函数上的asynchronouscallback

我正在试图使这个function作出适当的callback。 按照写法,callback将被调用两次 – 一次用于同步“if”语句,一次用于asynchronous“test2.save”语句。 我正在把计数器代码作为我尝试的一个例子。 如果声明是同步的,那么它不起作用。 我已经知道这个代码有什么问题,但我不知道如何使它更好。 var postMatches = function(user1, userResults, callback) { User.find({}, {username: 1, testResults: 1}, (err, users) => { var counter = 0; users.forEach(function(user2){ counter++; if(user1 !== user2.username && user2.testResults !== undefined) { var test1 = new Test({ username: user1, match: user2.username, compatability: mbti[userResults][user2.testResults], alreadyMatches: false }); test1.save( () => { […]

用mongoose更新mongodb中的所有数据

我在我的mongo数据库中有以下数据。 { "FirstName": "Sunil", "LastName": "Jamkatel" } 我想将全名添加到数据库中的所有文档,以便从文档中获取名字和姓氏,并将其添加为: { "FirstName": "Sunil", "LastName": "Jamkatel", "FullName": "Sunil Jamkatel" } 请让我知道如何使用mongoosejs来做到这一点。 谢谢

将文章归档后在某个ttl指定nodejs

所以我有两个集合。 active_posts集合 archived_posts集合 我想知道是否有一个npm模块或一个mongofunction,可以让一个活跃的post在存档(或发布)20天后移动到存档集合中。 我的文章架构是这个(临时): var postSchema = new Schema({ title: {type:String}, created_time: {type: Date, default: Date.now}, archived: {type: Boolean, default:false} });

Mongoose查询findOne({params})返回null,即使它在mongo shell中成功?

以下是正在使用的软件版本: mongoose4.10.8, mongodb 3.4, expression4.13.4, nodejs 6.11.1, npm 3.10.10, 在Mongo shell中,我可以find一个我的用户没有问题: > db.users.findOne({"admin":"true"}).pretty() >{ "_id" : ObjectId("…"), "updatedAt" : ISODate("2017-08-15T06:08:24.742Z"), "createdAt" : ISODate("2017-08-03T03:11:23.653Z"), "salt" : "…", "hash" : "…", "username" : "Testuser", "notifications" : [ { } ], "lastname" : "Administrator", "firstname" : "Webmaster", //********* FIELD I AM SEARCHING FOR HERE! "admin" : "true", "companyName" […]

mongoose – blogPost不是构造函数错误(模式/模型错误)

我是新来的mongoose和mongodb,我试图连接到mlab并插入一些数据,但我不断收到以下代码的错误 var newPost = new blogPost({title:'First Post', post:'this is my first post'}); ^ TypeError: blogPost is not a constructor at Object.<anonymous> (C:\Users\ipingou\website\hwnay\index2.js:39:15) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:509:3 这是我的代码: const mongoose = require('mongoose'); var blogPost […]

如何在Mongoose中进行聚合+填充

我感谢一些帮助。 我正在用express和mongodb(v3.4.4),使用mongoose(v4.10.5)做api rest。 我需要做一个聚合操作,但我不处理它。 我给你看一些代码。 模型(它有更多的属性,但我已经离开它简单): const CategoryModel = mongoose.model('Category', new Schema({ slug: { type: String, unique: true, lowercase: true, index: true }, description: String })); const MyModel = mongoose.model('MyModel', new Schema({ category: { type: Schema.Types.ObjectId, ref: 'Category' }, other: [{ type: Schema.Types.ObjectId, ref: 'Other' }], times_count: { type: Number, default: 0 } })); 重要的是,我有兴趣填充MyModel的category字段,而不是other字段。 […]

在Mongoose中使用错误的validation器进行路由

我使用Postman来testing路由,并且这个路由返回user.save((err)=>{})之后的err消息,表示密码太长。 它使用我创build的passwordValidator但我显然没有在Schema中为此路由调用它。 我究竟做错了什么? mongoose中的用户模式: const userSchema=new Schema({ email: { type: String, required: true, unique: true, lowercase: true, validate: emailValidators}, username: { type: String, required: true, unique: true, lowercase: true, validate: usernameValidators}, bio: { type:String,default:null,validate:bioValidators}, location: {type:String, default:null}, gender: {type:String,default:null,validate:genderValidators}, birthday: { type:String,default:null}, password: { type: String, required: true,validate: passwordValidators} }); 路线: router.put('/editProfile',(req,res)=>{ if(!req.body.bio){ res.json({success:false,message:"No bio […]

NodeJS:callback和asynchronous调用

我一直在盯着我的屏幕太久,似乎无法弄清楚这一点…基本上我做3查询使用mongoose,每一个build设在另一个的结果。 由于某种原因,家长电话会在孩子完成任务之前完成。 这是我的代码,为什么父母不等待继续直到孩子完成了工作? 我怎样才能让代码运行,因为我想要它:-) 我被告知使用承诺,但它看起来如此复杂的使用,我认为使用callback将足以处理asynchronous调用或我错了吗? var ctr = 0; // counter 1 var ct2 = 0; // counter 2 //Array to be used for the header of the csv file var mainArr = [["Personeelsnummer", "Chauffeur", "Week 1", "Week 2", "Week 3", "Week 4"]]; // Find all users in the database User.find({}).exec(function (err, users){ // forEach […]