Articles of mongoose

无法使用mongoose通过节点脚本保存mongodblogging

这是我的js文件描述模式和API的不起作用。 当我通过命令行工具来做到这一点的时候,模式非常简单,我已经实现了一些简单的查找命令。 'use strict' var util = require('util'); var bcrypt = require('bcrypt'); var mongoose = require('mongoose'); var Schema = mongoose.Schema; var validatePresenceOf = function(value){ return value && value.length; }; var toLower = function(string){ return string.toLowerCase(); }; var SportsStandings = new Schema({ 'sport' : { type : String, validate : [validatePresenceOf, 'a sport is required'], set […]

在Mongoose模型中对元进行sorting

我正在处理上传图片的应用程序,并且上传的图片以缩略图并排显示。 我想要实现filter的可能性,以便可以以不同的顺序显示图像,例如,大多数点的图像以降序排列。 我有麻烦想出一个很好的解决scheme,应该怎么做,我能想到的唯一的事情就是为此创build一个新的路线(就像我现在使用的路线一样),但是不同的sorting。 这是DRY编码,而不是一件好事,特别是因为我有更多的sorting选项的计划。 我有两个问题: 有没有更好的方法来完成这个(一个解决scheme,以便我不需要调用一个路由,而是在客户端做呢,或者可能传递一个参数到路由和if语句决定如何sorting) ? 如果应该在服务器端进行sorting,我怎样才能做到这一点? 计算点数(upvotes – downvotes),并不直接存储在Schema中。 图像模型: var ImageSchema = new Schema({ name : String, size : Number, title : String, body : String, buf : Buffer, date: { type: Date, default: Date.now }, comments : [CommentSchema], meta : { upvotes : Number, downvotes : Number, favs : Number, uniqueIPs […]

embedded式文档未保存到其集合中

好像我的embedded式文档没有被保存到它们各自的集合中。 这是我的模型: var County = new Schema({ _id : Schema.ObjectId, name : String, biggestCity : String }); var Country = new Schema({ _id : Schema.ObjectId, name : String, counties : {type: [County], ref: "County"} }); var Continent = new Schema({ _id : Schema.ObjectId, countries : {type: [Country], ref: "Country"}, }); …这里是我用来保存到MongoDB的代码: var continentModel = mongoose.model("Continent"); […]

Mongoose:预embedded文档的钩子之前是否预先保存父节点的钩子?

正如标题所示:在embedded式文档的预保存钩之前始终执行的父文档的预保存钩? 如果没有,是否有任何黑客执行它? 用例:在embedded式文档的预保存钩子中,我将一些计算的字段存储到父项。 在父母的前保存钩子,我做了一些与:) 编辑 我在问,因为这些钩子的asynchronous性(?)testing了几个实例可能无法回答我的问题。 谢谢。

mongodb:能find一个2d的索引返回距离吗?

我从mongodb文档中看到,与geoNear的db.runCommand返回距离也是。 我在node.js中使用mongoose, 想知道是否可以用Model.find({'loc':{$ near:[lng,lat],$ maxDistance:5 / 111.12},…. 。) 如果您有多个2d索引,则使用geoNear的runCommand不起作用。 我有一个集合中的2个2d索引。 一个在模式中定义,另一个是DbRef的一部分。 另外,我对用mongooserunco​​mmand使用的确切语法不是很自在。

节点CSVparsing器输出问题

我正在尝试使用Node CSVparsing器从我的Mongo数据库中读取查询结果,并将其写入到csv文件中。 当我运行我的脚本,我得到一个csv文件,第一行有两个[对象]条目,其他一切都是空白的。 这是我的代码: // node samples/sample.js var csv = require('csv'); var mongoose = require('mongoose'); var User = require('../models/userModel').User; dsn = "mongodb://localhost/test"; mongoose.connect(dsn); console.log ("here"); var users = User.find({}, function(err, result){ console.log(result); }); var columns = ['userName','agencyName','email','password','id']; csv() .from(users, { columns: true }) .toPath(__dirname+'/users.csv',{ columns: ['userName','agencyName','email','password','id'] }) .transform(function(data){ data.unshift(data.pop()); return data; }) .on('data',function(data,index){ console.log('#'+index+' '+JSON.stringify(data)); […]

Mongoose ODM:由于asynchronous,无法保存编码的密码

当文档已经存在时,我有盐生成和密码编码已经准备好的问题。 => mongoosejs不等到哈希结束,所以我们在数据库中没有密码和盐(但我可以console.log他们:)。 有什么可以避免这种行为? 一个服务员的function? 还是应该将编码部分移动到一些预保存中间件? 编码方法 UserSchema.methods.encodePassword = function(password) { crypto.randomBytes(32, function(err, buf) { this.salt = buf.toString('hex'); console.log(this.salt); crypto.pbkdf2(password, this.salt, 25000, 512, function(err, encodedPassword) { if (err) throw err; this.password = encodedPassword; console.log(this.password); }.bind(this)); }); }; 路线行动 // creates a new user app.post('/users', function(req, res) { // create new user var user = new […]

mongo:“2d”指数和正常指数

location: {lat: Number, lng: Number} 位置是在我的MongoDB 2d索引,我一直在使用这个地理空间search,这是正常工作。 现在,如果我需要searchdb.find({lat:12.121212,lng:70.707070}),它会使用相同的索引吗? 或者,我是否需要定义一个新的索引? 如果是这样,怎么样? 我在node.js中使用mongoose驱动程序

mongooseerror handling

我试图做一些validation用户input使用Express和Mongoose。 以前,我在用户模型的“密码”字段上直接设置了“最小长度”validation程序。 它将检查input的密码string是否足够长,如果不是,则会将其传递给尝试保存用户时创build的ValidationError对象。 这将被发回给用户,并显示在适当的表单域。 但是现在我已经实现了哈希,盐和encryption,这不能正常工作。 散列版本的密码远远长于原始密码。 所以我想我可以做这样的事情: exports.createNewUser = function(req, res, next){ var user = new User({ email : req.body.email , name : req.body.name }) , minLength = Validator.minLength(req.body.password); if (!minLength) return next(new Error('Password aint right length')); user.setPassword(req.body.password); user.save(function(err){ if (!err) return res.redirect('/'); else { console.log('error saving usr', err); err['body'] = req.body; return res.render('user/register', err); […]

Mongoose:在一个JSON对象中使用$ in操作符

我是Nodejs和mongodb的新手。 我正在尝试为以下情况获取数据。 考虑3个模式如下Profile模式 var ProfileSchema = new Schema({ username: {type: String, match: /^[a-zA-Z0-9_.-]+$/, unique: true}, name: String}); 文章架构 var PostsSchema = new Schema({ profileid: {type: ObjectId, ref: 'Profile'}, message: {type: String, match: /^.{1,160}$/} }); 遵循架构 var FollowSchema = new Schema({ profileid: {type: ObjectId, ref: 'Profile'}, followingid: {type: ObjectId, ref: 'Profile'}}); 这与Twitter层次结构类似。 要获得我的追随者的所有post,我尝试了以下 Follows.find({'profileid' : '500d18823e792d8814000001'}).select('followingid […]

Intereting Posts