Tag: mongodb

使用Node Express 4 MongoDB上载和检索图像

我已经使用MEAN堆栈语言创build了一个简单的login和注册。 我有一个configuration文件页面,用户可以编辑他的信息,如姓名,地址等,我可以存储和检索inputtypes的“文本”字段。 我如何添加图片上传function并检索上传的图片? 林新意味着堆栈,所以任何人都可以请帮助我? 谢谢。 我的server.js是这样的 require('rootpath')(); var express = require('express'); var app = express(); var session = require('express-session'); var bodyParser = require('body-parser'); var expressJwt = require('express-jwt'); var config = require('config.json'); app.set('view engine', 'ejs'); app.set('views', __dirname + '/views'); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use(session({ secret: config.secret, resave: false, saveUninitialized: true })); // use JWT auth […]

MongoDB查询返回空嵌套对象

我在MongoDB中有一个“对话”集合,我从NodeJS查询使用返回的数据来呈现对话的页面。 数据已经被正确地存储在数据库中,据我所知,当我查询它时,除了一对嵌套对象(即对话所属的两个用户)之外,所有事情都恢复正常。 以下是我在console.log对话中得到的内容(请注意“参与者”字段: [ { _id: 57f96549cc4b1211abadf28e, __v: 1, messages: [ 57f96549cc4b1211abadf28d ], participants: { user2: [Object], user1: [Object] } } ] 在Mongo shell中,参与者具有正确的信息 – 两个参与者的id和用户名。 这是架构: var ConversationSchema = new mongoose.Schema({ participants: { user1: { id: String, username: String }, user2: { id: String, username: String }, }, started: Number, messages: [ { type: […]

mongoosestream,如何更新每个文件?

我想根据updateIds数组更新n个文档。 我正在使用Mongoose Stream .on('data,function(){})。 哪个正确find所有正确的文档。 但是现在我不确定如何更新每个文档。 我可以在on。('data',function(doc){})里面写doc.update({query},{key:value})吗? Wine.find({ '_id': { $in: updateIds} }).stream() .on('data', function(doc){ // how do I update a doc property here? }) .on('error', function(error) { throw error; }) .on('end', function() { // final callback });

为什么Mongoose不允许我访问JSON属性?

在我的路线文件中,我有 router.get('/users/:user', function(req, res) { mongoose.model('users').find({name: req.params.user}, function(err, user) { res.send(user.name || 'User.name is not defined' ); }); }); 我的模式被定义为 var userDataSchema = new Schema({ name: String }, {collection: 'users'}); mongoose.model('users', userDataSchema); 在我的路线文件中,如果我只是做res.send(user) ,那么它给了我适当的JSON与所有的用户与他们的名字。 我的问题是,我无法从JSON访问特定的名称。 我已经尝试做JSON.stringify(user) ,然后JSON.parse()该variables,但user.name仍然无法访问。 我现在也尝试过user.toJSON() ,但是这会导致错误,甚至不响应'User.name is not defined' 编辑:这是JSON: [ { _id: "57feb97017910fa7e0e194d8", name: "Garrett" }, { _id: "57feb97817910fa7e0e194d9", name: "Steve" […]

如何在MongoDB中设置新的Date()?

我已经尝试了很多的组合,并检查了MongoDB 3.2文档,但我仍然没有得到我的数据库中存储新的Date()。 下面的其他一切都正确地存储。 提前感谢您的任何提示! 来自我的app.js文件的代码: db.collection('users').update({user: req.user.username}, { $push: { "recentPlays": { "quiz": req.session.mostRecentQuiz, "score": score } } },{ $set: { "mostRecentQuiz.quizObj": req.session.mostRecentQuiz, "mostRecentQuiz.time" : new Date() // StackOverflow: this is the part that is not getting stored in the DB. } }, function (err, result) { if (err) throw err; console.log(result); });

login使用护照后login用户

用户注册后,我希望他们自动login。我在线阅读使用req.login(),但它似乎并没有工作。 用户被添加到数据库,但没有login。有人可以指向我正确的方向吗? if(type == 'student'){ User.saveStudent(newUser, newStudent, function(err, user){ console.log('Student saved'); req.login(newUser, function(err) { if (err) { console.log(err); } }) }) } else { User.saveInstructor(newUser, newInstructor, function(err, user){ console.log('Instructor saved'); req.login(newUser, function(err) { if (err) { console.log(err); } }); }) } res.redirect('/classes'); } }); module.exports = router;

在用户注册中已经添加了其他字段的架构中,使用mongoose在MongoDB中插入数组

我正在创build在线课程的申请。 我为用户注册创build了一个模式。 在架构中,我也想添加一个用户在注册的课程的名称。 课程名称是一个数组。 用户注册成功。 之后,我创build了/仪表板的路线,用户发送POST请求添加课程名称。 该课程应该添加到注册课程的相同注册模式字段中。 但是,当我保存一个注册模式的新对象时,它会创build一个新的文档字段courseEnrolled字段。 我希望这个POST请求值被添加到用户的文档字段当然是以数组forms进行注册。 这是我如何定义我的注册模式。 它的名字在account.js var mongoose = require('mongoose'); var Schema = mongoose.Schema; var passportLocalMongoose = require('passport-local-mongoose'); var courseSchema = new Schema({ courseName : String }); var Account = new Schema({ username: { type: String, unique: true }, password: String, email: String, firstName: String, lastName: String, courseEnrolled: [{courseName : […]

Mongoose根据数据库数组中项目的值select结果

我有一个模式字段(价格)是一个数组,通常只有1个价格,但有时销售价格列为数组中的第二个项目。 我希望能够查询这个领域,并返回所有的产品,从最低到最高sorting(而我在它,使用$ GT和$ LT按范围select)。 但我的挑战是处理销售价格,这是我arrays中的第二个价值。 我需要能够按这个价格来分类,而不是第一个价格,如果实际上有一个销售价格的话。 我不知道如何说“如果(价格[1]){使用价格[1]}在我的mongoose查询。 UPDATE 我能够使用下面的查询几乎得到我想要的。 我的问题是,当我把price.1放在第一位的时候(这些部分是用$来划分的),我只能得到反映有价格产品的结果。 当我第一个放置第二个,那个价格是真的时,我只会得到相反的, 没有价格的产品。 mongoose只读我的查询的第二部分? Product.find({ $and: [{"price.1": {$exists : false }}, {"price.0": {$gte : req.body.lower_price}}, {"price.0": {$lte : req.body.higher_price} }], $and : [{"price.1": {$exists: true}}, {"price.1": {$gte : req.body.lower_price}}, {"price.1": {$lte : req.body.higher_price} }]}) .exec(function(err, products){ if(err){ console.log(err) } else{ res.send(products) } });

如何将数据保存到Mongoose中的数组?

我想存储每个点击事件到Mongoose中的数组,如果没有任何数组,那么它会为我创build一个。 目前它简单地保存为对象即{x:954,y:256},{x:254,y:156}我需要的是这样的[{x:954,y:256},{x:254 ,y:156}] 这是我的代码: clickModel Schema enter code var mongoose = require('mongoose'); require('mongoose-double')(mongoose); var Schema = mongoose.Schema; var integerValidator = require('mongoose-integer'); var SchemaTypes = mongoose.Schema.Types; var clickPoint = new Schema({ x: { type: SchemaTypes.Double }, y: { type: SchemaTypes.Double }, value: { type: Number, integer: true } }); clickPoint.plugin(integerValidator); //export model… module.exports = mongoose.model("ClickPoint", clickPoint); […]

Mongo:将返回的logging限制在切片上的递增计数

即时通讯在节点项目中使用mongoose,我有以下查询: var query = Model.aggregate( { $match: { id: id } }, { $sort: { created: -1 } }, { $project: { name: true, number: true, created: true, status: true, time: true, array_data: { $slice: ['$array_data', 5] } } } ) 我以为切片会根据array_data字段中有多less条logging将我的整个logging​​限制为5,但是它只会限制返回的array_data元素的数量。 我希望做的是: 可以说,我的模型中的logging1在array_data中有10个元素,在我的模型中有2个logging在array_data中有15个元素。 我希望能够切片或使用一些其他的function,所以当我查询我的模型与“限制”20它返回第一个集合与其所有10个元素array_data与第二个集合及其前10 array_data等于20的“极限”。 Mongo可以吗?