Tag: mongodb

在Express中使用MongoStore时出错

我试图将我的Express应用程序的会话存储在MongoStore中,但是在连接时出现错误。 该错误是一个巨大的对象/ JSON,我无法理解,所以我尝试了所有替代方法,我在网上find,但没有运气,迄今为止… 这里是应用程序configuration: var express = require('express'), MongoStore = require('connect-mongo')(express), passport = require('passport'); var app = express(); app.configure(function(){ app.use(express.compress()); app.use(express.static(path.join(__dirname, 'public'))); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.set('port', process.env.PORT || 8000); app.use(express.favicon(__dirname + '/public/img/favicon.ico')); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser('secret')); app.use(express.session({ secret: 'secret', store: new MongoStore({ db: dbOptions.db, host: dbOptions.host, port: dbOptions.port, username: dbOptions.username, password: […]

从mongoose数据库获取模型

我目前正在考虑build立一个小的基于REST的服务,我可以将一些数据发布到一个mongoose数据库并GET数据。 这是我的main.js文件: var http = require("http"); var DAO = require("./DAO"); var express = require("express"); var util = require('util'); var app = express(); app.use(express.bodyParser()); app.post('/postIsles',function(req,res){ DAO[req.method](req.body); res.send("body" + req.body.name); }); app.get('/getIsles',function(req,res){ var isleVar = DAO[req.method](req); res.send(isleVar); }); app.listen("3000"); console.log("\nApp available at http://127.0.0.1:3000\n"); 和DAO.js: var mongoose = require('mongoose'); //Connect to database mongoose.connect( 'mongodb://127.0.0.1:27017/library_database' ); //Schemas var Isle […]

我怎样才能有条件地分配一个颜色的玉文本

我有一个应用程序使用mongodb,node.js,expression,玉模板,jquery。 我有一组文档,每个文档都包含“活动”或“过期”状态。 我希望以绿色显示“活动”文档date和红色“过期”文档date。 .list if (applications.length === 0) | No applications. each application, index in applications .item div -if (application.Status = "active") -$( ".dateapplied" ).addClass("activeClass") div div.dateapplied div -var day = application.Applied.getDate() -var m = application.Applied.getMonth() -var y = application.Applied.getFullYear() -var prettydate = m + " / " + day + " / " + […]

mongoose多租户 – 处理文档引用+填充

我读过一堆关于Mongoose / MongoDB中的多租户设置选项。 选项是: 分开数据库。 由于每个数据库实例的开销,这是一个“否” 同一数据库中的前缀集合 – 我将拥有共享相同模式的tenant1_Products和tenant2_Products 。 带有参考文件的标准馆藏。 看起来#2是缩放的最佳select,因为它允许通过前缀进行简单的分片。 所以,假设,我会实现这样的dynamic检索某个租户的模型: tenant.methods.getModel = function(name) { return mongoose.model(this.uniqid + '_' + name); } 假设我提前为所有租户注册所有模型,并使用正确的模式,那么我可以做var productModel = myTenant.getModel('Product'); ,然后从那里创build/更新。 这个问题是当你需要实现文档引用来使用Mongoose的populate方法。 例如, var productSchema = new mongoose.Schema({ name:String, categories:[ { type:mongoose.Schema.Types.ObjectId, // This will need to change to "tenant1_Category", etc ref:'Category' } ] }); mongoose.model('tenant1_Product', productSchema); […]

在填充时连接一个string

这里是我的代码来填充专辑和他们的图像: server.get(url_prefix + '/image', function(req, res, next) { var album_id = req.query.album_id Album.findOne( {_id : album_id} ) .populate('images') .exec(function (err, album) { if (album) { return res.send({ status: { error: 0, message: "Successful" }, data: { album: album } }) } else return notify_error(res, "No Results", 1, 404) }) }) 相册架构: var AlbumSchema = new […]

Mongoose嵌套模式validation不起作用

我有以下mongoose模型: RequestSchema = mongoose.Schema( merchant: type: String required: true products: [ 'Product' ] ) Request = mongoose.model('Request', RequestSchema) ProductSchema = mongoose.Schema( _type: String product_id: type: String required: true quantity: type: String required: true ) Product = mongoose.model('Product', ProductSchema) 但是,当我通过下面的请求(这是缺less一个数量),它得到validation,并保存到数据库: {"merchant": "ABC", "products":[{"product_id":"12345"}]} 但是,当我尝试删除商家时,尝试保存它会导致架构validation错误: {"products":[{"product_id":"12345", "quantity": "1"}]} 我如何使这些都返回validation错误?

Mongodb,嵌套数组中的search对象

我在MongoDB上有这些types的项目: { "_id": { "$oid" : "2" }, "waypoints": [ { "step": 0, "coordinates": [1,2] }, { "step": 1, "coordinates": [1,3] }, { "step": 2, "coordinates": [1,4] } ] } 我试图在集合中find[1,2]来检索waypoints.step和_id,但结果不是我所期望的。 我想得到: { "_id": { "$oid" : "2" }, "waypoints": [ { "step": 0 } ] } 但我得到: { "_id": { "$oid" : "2" }, […]

Azure上的Node.js + MongoLab,如何防止网站闲置?

我将我的node.js + MongoDB应用程序部署到Azure网站,我使用MongoDB和MongoLab插件。 我注意到,在每次部署之后,我发送给应用程序的第一个请求不起作用,因为该站点仅在第一个请求上被初始化,那就是连接到MongoDB的时间。 另一个问题是,如果我暂时不使用网站,那么它似乎处于闲置状态,因为我第一次尝试访问它时,它不起作用,类似于第一个请求。 有没有办法迫使Azure在部署之后启动网站,并阻止网站进入睡眠状态? 更新 :我已经将网站从免费切换到标准 ,这似乎解决了第二个问题,似乎并没有进入睡眠状态。 第一个问题依然存在,我在我的app.js的开头放了一个console.log()调用,并用azure site log tail监视站点。 app.js只在第一个请求中执行。 但是,这不是一个大问题,因为自然我试着在浏览器中部署每个网站后打开网站,但是仍然有点奇怪。

MongoDB不能调用未定义的方法'聚合'

我正试图拉数组中的最低分数。 我的错误是不能调用未定义的方法'聚合'。 聚合方法在mongodb中定义,我甚至可以定义它,而db.students也是定义的。 我似乎无法find我错在哪里。 var MongoClient = require('mongodb').MongoClient // Driver for connecting to MongoDB MongoClient.connect('mongodb://localhost:27017/school', function(err, db) { if(err) throw err; x = db.students.aggregate( [{ "$unwind":"$scores" },{"$match":{"scores.type":"homework"}},{ "$group":{"_id":"$_id","minscore":{"$min":"$scores.score" }}} ] ) x.result.forEach(function(doc) { db.students.update( { "_id": doc._id }, { "$pull": { "scores" : { "score":doc.minscore, "type":"homework" } } } ); }); }); 我有这种感觉,因为盯着这个太长时间了,我感到用一双新的眼睛来看这个东西。

将Backbone.iobind(socket.io)与一组node.js服务器一起使用

我使用Backbone.iobind将我的客户端骨干模型通过socket.io绑定到后端服务器,后端服务器又将这些模型存储到MongoDB中。 我使用的是socket.io,所以我可以将更改同步到其他客户端主干模型。 当我尝试在一个node.js服务器集群上运行同样的事情时,问题就开始了。 使用将会话存储到MongoDB的 connect-mongo可以轻松设置会话存储。 但是现在我不能通知所有的客户端,因为客户端分布在不同的node.js服务器之间。 我发现的唯一解决scheme是在不同的node.js服务器(例如mubsub )之间设置一个pub / sub队列,这似乎是一个非常重的解决scheme,每次更改都会触发所有服务器上的事件。