Tag: mongodb

根据链接结果的属性过滤mongodb文档

我正在开发一个使用MEAN堆栈的购物网站。 考虑有一个名为产品,有12个不同的属性,如颜色,大小,品牌等一个mongoose模型。我想添加一个function,用户筛选产品基于他的select属性和相关的价值,如所有的购物网站。 我如何查询和dynamic查找产品,并链接结果,如果用户做出多个select。

如何在不使用_id的情况下返回数据当我在mongoose中使用findByIdAndUpdate?

这是我的代码: Task.findByIdAndUpdate({_id: req.params.task_id}, updateObj, {new: true}, function (err, updatedUser) { if (err) { return result.serverError(req, res) } result.success(req, res, updatedUser); }); 它会返回所有的字段,但我不需要'__v'和'_id',我该怎么办?谢谢。

Connect-mongo语法错误:意外的标记=>

嗨,我有以下错误 node_modules/connect-mongo/src/index.js:29 unserialize: options.unserialize || (x => x), ^^ 我有这些版本: node@v3.3.1 express@4.14.0 mongoose@4.6.5 mongodb@2.2.11

$ set在mongodb更新中不起作用

所以即时通讯工作与nodeJS和mongoDB 。 即时通讯在更新一个集合时遇到问题,自从我开始工作一个星期以来,这真的让我很头疼。 所以这是我的样本集合 { "_id": ObjectId('51299sdfasdf') //this is just a sample Id "names": [ "NameA", "NameB", "NameC" ], "names_id": [ ObjectId('asdfasdf1312'), ObjectId('12sda123123a'), ObjectId('asdf1212123a') ], "user_alias": "SampleA" } 那么这是我的脚本 var mongoose = require('mongoose'); var model = mongoose.model('Sample'); model.update( { _id: req.query._id }, { $set: { names: namesArray, //this are set of names ex; ['name1', 'name2'] […]

直接在前端自动更新mongodb的更改,而不使用Node Socket.io和angularjs进行页面刷新

我的问题是,如果我直接在mongodb中手动添加一条消息,如何在活动的UI客户端页面中自动显示而不需要刷新。 我的代码如下。 我的情况是,当新客户端访问页面时,显示mongo中的现有logging,从而保持连接。 但是,如果我直接在mongo里添加一条logging并加载一个新的客户端,那么只有这个logging会有logging,而其他的logging只会在刷新时才会得到。 app.js(服务器端脚本) mongoose.connect("mongodb://localhost:27017/some"); var mschema=mongoose.Schema({ message: String, time : {type:Date ,default: Date.now} }); io.sockets.on('connection', function (socket) { chatmsg.find({},function(err,docs) { if(err) console.log("errorr"); else socket.emit('old msgs',docs); }) socket.on('message', function(message) { var newmsg=new chatmsg({message : message}); newmsg.save(function(err) { if(err) { console.log("error"); } else io.sockets.emit('new message',message) ; }) }) controller.js(客户端脚本) var socket=io("http://localhost:3200"); $scope.sendemit=function() { console.log("inside function"+$scope.textchat); […]

将sorting添加到mongoose查找查询

首先,我做了一些备忘录的列表页。 我想通过订单创build的备忘录加载备忘录。 这意味着就像简单的SNS一样,我想让它们按堆栈顺序加载。 这是数据库架构添加“created_at” var StatSchema = mongoose.Schema({ id: {type: Number, unique: true, 'default':''}, … created_at: {type: Date, index: {unique: false}, 'default': Date.now} }); 我有方法简单地列出所有的备忘录。 其实这是关于MongoDB的路线。 StatSchema.static('findAll', function(callback) { return this.find({}, callback); }); 然后,我想添加属性“sorting”就像 this.sort({'created_at':-1}) 我如何修改原始代码?

处理MongoError的好方法:服务器实例池被销毁

我用mongo连接池运行一个守护进程。 它运行良好的天,但最终崩溃,每一个后续请求得到这个错误: MongoError:服务器实例池被销毁 代码与此类似: var MongoClient = require('mongodb').MongoClient; var express = require('express'); var app = express(); MongoClient.connect(config.mongo.url, function(err, db) { app.use('/', function(req, res, next) { db.collection('somecollection').find({}).toArray(function(err, result) { console.log(result); }); }) var server = require('http').Server(app); server.listen(config.worker.port, function() { var address = server.address(); logger.info({ address: address.address, port: address.port }, 'New Worker created'); }); }); 重新启动过程可以解决问题,但是我希望应用程序以某种方式优雅地重新连接并重置那里的“db”对象。

Mongoose-paginate:溢出sorting阶段缓冲的数据使用情况?

我正在使用mongoose,mongoose和ExpressJS。 我有这个错误: 错误检索stream:MongoError:运行器错误:溢出sorting阶段缓冲数据使用34227161字节超过内部限制的33554432字节 routes.js: router.get("/", function(req, res, next) { var page = req.query.page === undefined ? 1 : req.query.page; var options = { page: page, limit: 30, sort: { created_at: 'desc' } }; // https://github.com/edwardhotchkiss/mongoose-paginate Stream.paginate(query, options, function(err, result) { if (err) { console.log("Error retrieving streams: " + err); errorMessage = "A problem occurred retrieving […]

从Mongoose查询结果中排除空属性

我使用Mongoose查询数据,然后通过我的快速API作为响应返回。 我想阻止在API响应中出现空属性。 有没有一种很好的方式通过mongoose做到这一点? 推荐使用Express&Mongoose的方法是什么?

PassportJS重命名“用户”对象

我使用PassportJS作为我的loginfunction有没有办法改变请求中的“用户”对象名称? 这是现在它是如何工作的,默认情况下(req.user): function (req, res, next) { if (!req.user) { req.flash('error', 'Please sign in to access this page.'); res.redirect('/login'); } else { next(); } } 我想使用下面的代替(req.candidate): function (req, res, next) { if (!req.candidate) { req.flash('error', 'Please sign in to access this page.'); res.redirect('/login'); } else { next(); } }