Tag: mongoose

ExpressJS和Mongoose REST API结构:最佳实践?

我使用NodeJS(Mongoose&ExpressJS)构build了一个REST API。 我认为目前我有一个非常好的基本结构,但是我想知道这种项目的最佳做法是什么。 在这个基本的版本中,一切都通过app.js文件。 然后每个HTTP方法都被传递给请求的资源。 这允许我dynamic地将资源添加到API,并且每个请求将相应地传递。 为了显示: // app.js var express = require('express'); var mongoose = require('mongoose'); var app = express(); app.use(express.bodyParser()); mongoose.connect('mongodb://localhost/kittens'); var db = mongoose.connection; var resources = [ 'kitten' ]; var repositories = {}; for (var i = 0; i < resources.length; i++) { var resource = resources[i]; repositories[resource] = require('./api/' + […]

使用Mongoose ORM的凶手是什么原因?

我一直在使用一个新的项目,但这也是我第一次使用MongoDB。 定义一个模式似乎没有必要,因为我认为mongo的优势在于它不需要定义的scheme。 我不能仅仅保存对象,不pipe架构如何? 那为什么我要? 另外文件是缺乏的,使我可以很容易地在蒙戈壳做的事情,那么他们应该是。

ISODate没有定义

我正在尝试使用nodejs / mongoose从mongodb获得结果。 var dateStr = new Date(year,month,day,0,0,0); var nextDate = new Date(year,month,day,23,59,59); GPSData.find({"createdAt" : { $gte : new ISODate(dateStr), $lte: new ISODate(nextDate) }}, function(err, data) { if(err) console.log(err); }); 错误: ISODate is not defined

用Mongoose返回更新的集合

我使用nodejs / express / mongoose / angularjs。 我想更新一个名为Lists的集合,它有几个属性,其中之一是一个项目的数组。 在下面的代码中,我正在推送项目数组中的新任务项目。 一切工作正常,但更新function不会发回更新的集合,那么我必须对数据库执行另一个查询。 有没有更有效的方法来做到这一点? nodejs / express代码: exports.addTaskToList = function(req, res) { var listId = req.params.Id; var taskId = req.params.TaskId; Lists.update({_id: listId}, {$push: {items: taskId}}, {safe:true, upsert: true}, function(err, result){ if(err) { console.log('Error updating todo list. ' + err); } else{ console.log(result + ' todo list entry updated […]

模式内的Mongoose模式

我怎样才能添加架构到另一个架构? 这似乎不是有效的: var UserSchema = new Schema({ name : String, app_key : String, app_secret : String }) var TaskSchema = new Schema({ name : String, lastPerformed : Date, folder : String, user : UserSchema }) 我检查了网站,它显示了如何声明它为一个数组,但不是单身。 谢谢

外号mongoose

我从mongoose开始,我想知道如何做这种types的configuration: 一个食谱有不同的成分 我得到了我的两个模型: 配料和食谱: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var IngredientSchema = new Schema({ name: String }); module.exports = mongoose.model('Ingredient', IngredientSchema); var mongoose = require('mongoose'); var Schema = mongoose.Schema; var RecipeSchema = new Schema({ name: String }); module.exports = mongoose.model('Recipe', RecipeSchema);

Node.js + mongoose

我是Node新手,我正面临一个错误: [RangeError:超出最大调用堆栈大小] 我无法解决这个问题,因为大多数其他堆栈问题stackoverflow有关节点处理数百callback的问题,但我只有3在这里。 首先获取(findbyid)然后更新一个保存操作! 我的代码是: app.post('/poker/tables/:id/join', function(req,res){ var id = req.params.id; models.Table.findById(id, function (err, table) { if(err) { console.log(err); res.send( { message: 'error' }); return; } if(table.players.length >= table.maxPlayers ) { res.send( { message: "error: Can't join ! the Table is full" }); return; } console.log('Table isnt Full'); var BuyIn = table.minBuyIn; if(req.user.money < table.maxPlayers […]

Mongoose / mongoDB查询连接..但我来自一个SQL背景

我来自一个SQL背景,所以编写查询在sql中,我join表是很简单,但我想我错过了在mongoose/ mongodb 基本上我知道Subscriber_ID(映射到User Collection中的文档) 我想拉的项目组,所有的用户所属的项目,所以如果我要写在pseduo SQL这将是像 Select ProjectGroup.title, Project.Title FROM ProjectGroup, Project, User WHERE User.id = req.body.subscriber_id AND Project.subscriber_id = User.id AND ProjectGroup.project_id = Project.id 在mongoose / mongodb中必须有办法做类似的连接,因为这个types映射到一个模式对吗? 我的模式….. 项目组模式 var ProjectGroupSchema = new Schema({ title : String , projects : [ { type: Schema.Types.ObjectId, ref: 'Project' } ] }); 项目模式 var ProjectSchema = new […]

护照 – 脸书 – 不能得到about_me和电子邮件configuration文件字段

我正在尝试使用passport-facebook为我的应用程序build立一个login系统。 除了从请求中返回未定义的2个字段之外,一切进展顺利。 我会发布我的整个代码的login程序,因为我没有看到有关它的很多信息,即使在这个问题有很多问题。 这是app.js中的configuration var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; passport.serializeUser(function(user, done) { done(null, user.facebookId); }); passport.deserializeUser(function(id, done) { routes.findUserById(id, function(err, user) { done(err, user); }); }); passport.use(new FacebookStrategy({ clientID: FACEBOOK_APP_ID, clientSecret: FACEBOOK_APP_SECRET, callbackURL: FACEBOOK_CALLBACK_URL, profileFields: ['id', 'displayName', 'link', 'about_me', 'photos', 'email'] }, routes.handleLogin )); 使用护照初始化和会话 app.use(passport.initialize()); app.use(passport.session()); 实际的请求处理,请注意我正在使用正确的范围 app.get('/auth/facebook', passport.authenticate('facebook', { scope: […]

将查询返回结果mongoose到一个variables

我需要在node.js中返回带有mongoose的查询的结果。 你如何返回值来设置一个variables的值? 我需要做的是: var results = users.findOne({_id : users_list[i]['user_id']},{email : 1, credits : 1},{}, function(err, docs) { if( err || !docs) { console.log("No user found"); } else { return docs; }; }); 为了有: results = docs 非常感谢您的回复 。 我也有另一个问题。 如何使用find或findOne在查询运算符中传递variables? 喜欢 : var foo = "Blaa"; users.findOne({_id : users_list[i]['user_id']},{email : 1, credits : 1},{}, function(err, […]