Tag: mongoose

会话pipe理,Node + Express和Mongoose模式对象

我正在使用Node.js + Express + Mongoose,并使用Mongoose Schema来存储“会话”数据。 同时,我正在使用“connect-mongodb”进行会话pipe理(本地驱动程序)。 直到今天,我已经意识到我有多余的function。 所以,我试图将我的Schema对象添加到“req.session”。 它似乎工作,但是我在下一个请求中释放了我的Schema对象的Moongosefunction。 我考虑的一个select是存储在'req.session'中的对象的id,然后使用Mongoose来检索它。 我考虑的另一个select是用Mongoose会话pipe理器replace“connect-mongoose”。 你可以帮我做决定,并推荐一个方法。 更具体地说,如果我使用Mongoose解决scheme,是否可以解决与我的Schema对象失去Mongoosefunction的问题? TIA

在Mongoose.js v3中进行版本控制

我知道在Mongoose中版本化主要是为了避免子文档数组的问题。 但是,是否也可以使用该function来避免对文档的更新发生冲突? 即两个用户同时更新同一个文档。 理想情况下,我想要做的是这样的: 使用find()检索文档,检查版本是否与预期的版本匹配(由If-Match头中的客户端发送)。 如果是这样,继续更新文档。 在save()上,如果版本从(1)开始改变,则失败。 如果我把setTimeout()放在1和2之间,那么在3之前手动更新__v ,保存仍然成功。 我认为这是因为在这种情况下,Mongoose不认为有必要在更新中包含版本子句。 我也试着在save()之前调用increment ()。 我认为这将增加在保存操作的版本,但它似乎是增加版本,然后保存抱怨它不匹配什么是在数据库(这显然不会)。 我最好用自己的中间件来实现版本控制吗?

Mongoose报告成功写作,数据库中没有任何东西

mongoose成功callback正在运行,但没有出现在我的数据库,当我通过控制台与Mongo交互。 任何人都可以帮助为什么什么都没有出现在数据库? app.js var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path') , mongoose = require('mongoose'); var app = express(); var TimesheetsController = require(__dirname + '/controllers/timesheets'); var UsersController = require(__dirname + '/controllers/users'); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); […]

结构推荐

我尝试为我的nodejs / express / mongoDB应用程序find一个好的目录结构。 目前,我使用本机mongodb驱动程序,它感觉不错,但速度很快,但是在定义适当的结构时受到限制…当MVC是快速/节点定义合适的db模型的方法并不那么容易。 尽pipemongoose及其图案的概念会使模型的实际devise变得容易,但我并不是那种在我的堆栈之上的另一层的粉丝……它感觉有点臃肿。 我寻找一个替代scheme,发现在本地驱动程序顶部是一个薄包装的mongoskin,但增加了一些function,以支持MVC-ish模式。 总的来说,我发现这对其他人来说也是一个普遍的问题。 我欣赏链接中提出的想法: https : //stackoverflow.com/a/8428281/1055685 不过,模型目录里面的查询并不是真正的MVC(就像评论中提到的那样) – 我不喜欢它… 明确的MVC演示不是那么有用…你在那里find了一些启发吗? 你推荐遵循哪种模式(如果MVC是推荐模型是真正的问题)? 你一般推荐蒙古人吗?

Moongose:按mathsorting,在string数组中search多个值

你好同胞SO用户, 我遇到了一些先进的mongoose查询,我根本无法从文档中找出答案。 首先,我想按一些math来sorting。 基本上我想能够通过两个对象的价格差异进行sorting。 我有“价格”和“旧价格”,其中包含基本的数字值。 然后,我想减去他们,并以最高的折扣sorting。 所以在SQL中,我会是这样的 ORDER BY (oldprice – price) 我遇到的另一个问题是通过string数组筛选string数组。 所以基本上我有一个“裤子”模型,与一个[大小]对象(string数组),其中包含多个尺寸。 现在我想能够search多个用户select的大小的分贝,并find所有的裤子,其中包含一个选定的大小。 我试过了: Pants.find({ name: new RegExp(search, 'ig'), sizes: { $in: [selectedSizes] } }).skip(skip).limit(limit).sort(sort).execFind(function(err, pants) { return res.send(pants); }); 如果一个值位于“selectedSizes”中,哪个工作正常,但失败并具有多个值。 希望有人有一些想法;-) 裤子型号: var PantsSchema; PantsSchema = new mongoose.Schema({ supplier: { type: String }, manufacturer: { type: String }, web: { type: String […]

在MongoDB中按date分组

我正在AppFog上运行一个博客式的Web应用程序(前Nodester)。 它是用NodeJS + Express编写的,使用Mongoose框架保存到MongoDB。 MongoDB是1.8版本,我不知道AppFog是否会升级到2.2。 为什么介绍这个? 那么,现在我的“post”显示在一个基本的“分页”的可视化,我的意思是他们只是从mongo拿起,按date降序sorting,一页一页。 这是一个片段: Post .find({pubblicato:true}) .populate("commenti") .sort("-dataInserimento") .skip(offset) .limit(archivePageSize) .exec(function(err,docs) { var result = {}; result.postsArray = (!err) ? docs : []; result.currentPage = currentPage; result.pages = howManyPages; cb(null, result); }); 现在,我的目标是GROUP BY'dataInserimento'和显示post就像一个“日记”,我的意思是: 第一页=> 2012/10/08:我显示3post 第二页=> 2012/10/10:我显示2post(2012/10/09没有post,所以我不允许一个白页) 第3页=> 2012/10/11:35post等等… 我的想法是首先获得所有date列表(也许每天计算post),然后build立页面链接,并且当页面(date)被访问时,像上面那样查询,添加date作为参数。 解决scheme : 汇总框架将是完美的,但我现在无法得到这个版本的Mongo 以某种方式使用.group(),但它在分片环境中不起作用的想法不会激起我的兴趣! 🙁 写MAP-REDUCE! 我认为这是正确的路要走,但我无法想象如何写map()和reduce()。 你能帮我一个小例子吗? 谢谢 编辑 […]

在运行时将缺省值添加到mongoose模型中

我想有我的mongoose模型中的某些字段的默认值。 诀窍是我不想将这些值存储在数据库中,但是在模型初始化时要添加什么值。 请帮忙。

无法使用find查询在mongoose中查找数据

在我的应用程序中,我希望用户input用户名和密码,然后用户名首先在数据库中使用查询查询进行检查,如果用户名发现则将新页面呈现给用户。 问题是如果我input一个错误的用户名和密码,那么它也呈现一个新的页面,并且页面也不完全加载。 请告诉我什么是错误的。 在app.js我写了: app.post('/profile',users.login); 在users.js我写: exports.login=function(req,res){ console.log("login called"); PersonalInfo.findOne({ name:req.params.userName}, function(err,data){ if(err) { console.log("find is not done"); console.log(data); } else{ res.render("/profilearea.ejs"); } }) }

基于Express和Mongoose的REST API – 在将对象返回给用户之前,过滤掉对象的某些属性

我使用Express和Mongoose在Node.js之上构build了一个RESTful API 我在我的模式中使用的某些字段/属性仅供内部使用,根本不应该被API用户看到。 在res.send()之前删除它们的最好方法是什么? 我必须手动执行每个路线(获取,发布,更新)还是有一个通用的方法来过滤掉它们? 我尝试使用自定义中间件,但是这并不起作用 – 当我在使用(app.router)之前放置中间件时,res.body是未定义的,如果放置后,我的中间件从未被调用过。 另外,由于在中间件中,我正在处理单个文档和文档数组,我宁愿find一种方法来处理每个文档。

Mongoose.js保存文件时出现exception,但看似可接受的string值

我得到一个错误从Node.js保存到mongoose.js的文档。 这段代码已经运行良好了一段时间,但它现在导致JavaScript对象与键值看起来很好,否则的问题。 正在保存的是一个文档,其中一个成员是一个关联数组,为简单起见,它们表示为Schema.Types.Mixed : var formatSchema = new mongoose.Schema({ name: {type: String, required: true}, values: {type: mongoose.Schema.Types.Mixed, required: false} }); 当一个对象有一个像"0038-"这样的键时,它现在失败了。 具体来说,这是破折号-这是造成这个问题。 如果我把这些值(testing,而不是用户满意度),它加载罚款。 隔了这么远,我们现在难以理解如何进行。 [ { "name": "INJURYF", "values": { "0": "No", "1": "Yes" } }, { "name": "RFVF", "values": { "10050": "Chills", "10100": "Fever", "10200": "General weakness", "10250": "General ill feeling", "00323": "Salmonella arthritis", […]