Articles of mongoose

从数组中获得所有匹配属性的结果

我知道如何使MongoDB根据如下数组find一行: useritems.find({userid: useridhere, "items.id": idhere}) 但是,我将如何search,并获得所有被激活的项目,或获得所有项目的物业属性? 例如: useritems.find({userid: useridhere, "items.activated": true}) 会导致从激活的用户获取所有项目是真实的。 这是我的项目架构: var userItemsSchema = new Schema({ userid : String, items: [ { id: {type: Number, default: 1}, activated: { type: Boolean, default: false}, endtime : {type: Number, default: 0}, }, ], }); module.exports = mongoose.model('useritems', userItemsSchema);

在mongodb和nodejs中build模博客和评级

我有一个博客集合,包含用户给他们的标题,正文和集合评级。 另一个收集“评级”,其架构参考博客,用户评估(如果他根据所有评级)他们的ObjectIdsforms和评级,即+1或-1。 当一个特定的用户按照“最新的第一个”顺序浏览博客时(比如说,每个页面有40个blogs[0]称他们为blogs[0]到blogs[39] )。我必须检索与这个特定用户有关的评级文件,这40个博客,如果在所有的用户评价他们,并通知他给了这些博客什么评级。 我试图提取一个特定用户的博客引用objectIds位于blogs[0]._id和blogs[39]._id之间的所有评级文件,在我的情况下返回空列表。 可能是objectIds不能使用$lt和$gt查询进行比较。 在那种情况下,我应该怎么做呢? 我应该重新devise我的模式,以适应这种情况? 我正在使用mongoosejs驱动程序来处理这种情况。 这里是代码的相关部分,执行有点不同,但你得到的想法。 架构: Client= new mongoose.Schema({ ip:String }) Rates = new mongoose.Schema({ client:ObjectId, newsid:ObjectId, rate:Number }) News = new mongoose.Schema({ title: String, body: String, likes:{type:Number,default:0}, dislikes:{type:Number,default:0}, created:Date, // tag:String, client:ObjectId, tag:String, ff:{type:Number,default:20} }); 楷模: var newsm=mongoose.model('News', News); var clientm=mongoose.model('Client', Client); var ratesm=mongoose.model('Rates', Rates); 逻辑: newsm.find({tag:tag[req.params.tag_id]},[],{ sort:{created:-1},limit: buffer+1 […]

mongoose复杂(asynchronous)虚拟

我有两个mongoose模式如下: var playerSchema = new mongoose.Schema({ name: String, team_id: mongoose.Schema.Types.ObjectId }); Players = mongoose.model('Players', playerSchema); var teamSchema = new mongoose.Schema({ name: String }); Teams = mongoose.model('Teams', teamSchema); 当我查询队伍时,我也会得到虚拟生成的队伍 : Teams.find({}, function(err, teams) { JSON.stringify(teams); /* => [{ name: 'team-1', squad: [{ name: 'player-1' } , …] }, …] */ }); 但我不能 使用虚拟 ,因为我需要一个asynchronous调用: teamSchema.virtual('squad').get(function() { […]

在运行节点应用程序时未捕获,未指定“错误”

我是node.js express.js的初学者。 (今天早上开始:-))我已经包含了db.js,它有我的连接细节到mongolab和User.js这是我的模型。 请find下面的代码。 Db.js var mongoose = require('mongoose'); var Schema = mongoose.Schema; module.exports.mongoose = mongoose; module.exports.Schema = Schema; // Connect to cloud database var username = "Ausername" var password = "Apassword"; var address = 'Aaddress'; connect(); // Connect to mongo function connect() { var url = 'mongodb://' + username + ':' + password + […]

在哪里用expressjs,mongoosejs和redis编写nodejs中的业务逻辑

我的业务逻辑包括一个请求上的mongodb操作和redis操作。 我不知道我们应该把逻辑代码放在哪里。 在Java项目中,我们有DAO , 服务和控制器对象。 但在nodejs项目中,我不知道在哪里放我的代码。 我应该把逻辑代码routes/index.js ? app.post('/deal', function(req, res) { … //TODO: here }); 或者创build一种服务对象,比如我们在Java程序中做什么?

通过Mongoose,Node.js,MongodDB中的特定属性查找embedded式文档

对于这个应用程序,我使用Node.js,MongoDB,Mongoose和Express 所以我有一个Param对象,它包含一个Pivot数组,我想从下面概述的枢轴读取某些数据 —in models.js————————- var Pivot = new Schema({ value : String , destination : String , counter : Number }); var Param = new Schema({ title : String , desc : String , pivots : [Pivot] }); ————- in main.js ————– var Param = db.model('Param'); app.get('/:title/:value', function(req, res){ Param.findOne({"title":req.param('title')}, function(err, record){ console.log(record.pivots); record.pivots.find({"value":req.param('value')}, function(err, […]

用mongoose在mongodb中存储图像? 如何?

任何人都有一个快速的例子,用mongoose和nodejs express在mongodb中插入图像 我读了一些例子,但我不能理解如何? 我想上传一个forms的图像 app.post('/videos/new', function(req, res) { req.form.complete(function(err, fields, files) { console.log('here i go'); if(err) { next(err); } else { ins = fs.createReadStream(files.file.path); console.log('insssssssssssss'+ins); ous = fs.createWriteStream(__dirname + '/static/uploads/videos/' + files.file.filename); util.pump(ins, ous, function(err) { if(err) { next(err); } else { RegProvider.save({ file: req.param(files.file.filename), filename: req.param('filename') }, function(error, docs) { res.redirect('/videos'); }); } }); […]

mongoose和Q承诺

我正在从这里的mongoose / q promises框架样例开始工作 ,但在尝试使用findOne时似乎遇到了nfbind的一些问题,主要是因为Q框架中的样本似乎不符合要点。 我的代码: var mongoose = require('mongoose'); var Q = require('q'); var user_schema = mongoose.Schema({username:String, last_touched:Date, app_ids:[String]}); var user = mongoose.model('user', user_schema); exports.user = user; exports.user.find = Q.nfbind(user.find); exports.user.findOne = Q.nfbind(user.findOne); 如果我调用user.findOne({username:'test'}).then(function(err, user) { … } ,用户总是未定义。如果我删除导出并使用callback的非诺言版本,我得到了用户,我错过了一些特殊的魔法,但是在看了代码实现之后,来自Q github和mongoose演示的例子…没有什么真正跳出来的。用Q做一个findOne工作? 我也尝试在源代码中而不是在模块中设置nfbind函数,但无济于事。

使用Mongoose时出错'Object has no method xxx'

我正在尝试使用Mongoose来连接MongoDB和Nodejs。 我有我的代码如下。 当我试图通过api /用户做GET / POST时,我得到了 错误 TypeError: Object function model(doc, fields, skipId) { [08/14 21:28:06 GMT+0800] if (!(this instanceof model)) [08/14 21:28:06 GMT+0800] return new model(doc, fields, skipId); [08/14 21:28:06 GMT+0800] Model.call(this, doc, fields, skipId); [08/14 21:28:06 GMT+0800] } has no method 'list' 有人可以解释我做错了什么? 我不得不把我的代码分成不同的文件,因为我有很多的function,我不想把它们或者我的app.js或index / routes.js app.js //database connection mongoose.connect('….'); var db = […]

用mongoose填充模型对象的数组

这是我使用的模式。 正如你所看到的,survey_codes模型path由一个ObjectIds数组组成。 … var Schema = mongoose.Schema; var Email = mongoose.SchemaTypes.Email; var ObjectId = mongoose.SchemaTypes.ObjectId; var RestaurantSchema = new Schema({ id : {type: String, required: true, unique: true}, name : {type: String, required: true}, owner_name : String, reservation_email : Email, survey_url : String, survey_codes : [{type: ObjectId, ref: SurveyCode}], created_at : {type: Date, default: Date.now} […]