Tag: mongoose

MongoDB和nodejs中的自动增量id字段(express框架)

我如何设置一个“ID”字段在MongoDB数据库与autoIncrement。 我需要唯一的数字ID。 我知道,有简单的方法,而不是计数项目…我的应用程序与nodejs和expressjs框架

节点Mongoose,投射到ObjectId在path“PATH”上的值“N”失败

试图为Node Express应用程序设置一个mongoose数据库,我的一些文档有logging需要引用其他集合。 我知道Mongoose提供populate这种关系的populate方法,但是我很难设置它。 据我所知,我需要指定我的模式,因此… bookingSchema = mongoose.Schema _id: Number # Involved users __booker: {type: Schema.Types.ObjectId, ref: 'User'} …但是当我试图种子数据库__booker值,如1,2,3(所有这些都是在用户集合中的有效文档)获取错误… Cast to ObjectId failed for value "3" at path "__booker" 我会假设整数或整数string应该很容易强制到一个ObjectId,但似乎无法得到这个工作。 我究竟做错了什么?

从callback中返回一个值,或者在node.js中的特定callback之外访问它?

//geoSpacialRepository.js var geoSpatialRepository = {}; var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/repository'); var Schema = mongoose.Schema; var LocationSchema = new Schema({ type: String, coordinates: [Number,Number] }); var Location = mongoose.model('locations', LocationSchema); var db = mongoose.connection; geoSpatialRepository.find = function(){ var query = Location.find({}, function(error, data){}); query.exec(function(err, data){ console.log("DATA ************************** "); console.log (JSON.stringify(data)); }); } exports.geoSpatialRepository = geoSpatialRepository; 我写的地方console.log […]

RESTful Express Mongoose&Backbone – Backbone model.remove()不起作用

我正在使用Express,Mongoose和Backbone与Marionette开发Node应用程序。 除了删除路由,所有的路由都运行正常。 如果我调用this.model.destroy,我总是得到这个错误: DELETE http://localhost:3000/api/user 404 (Not Found) 在Express的删除路由中,404被返回,就像Express不支持它一样,但是我已经看到了使用它的大量例子。 这是我的设置: mongoose纲要: var UserSchema = new mongoose.Schema( { name: String, email: String, age: Number }); User = mongoose.model('User', UserSchema); ExpressJS路线:(不工作) app.del('/api/user/:id', user.remove); 要么 app.delete('/api/user/:id', user.remove); 这个路由被骨干model.destroy()调用,但是返回错误404。 ExpressJS的user.js控制器:(工作,但没有达到因为以前的404) exports.remove = function(req, res) { var id = req.params.id; User.findById(req.params.id, function(err, user) { user.remove(function(err) { if(err) res.json(err); res.json('all good'); […]

nodejs / mongoose更新文件中的“多级”值/不能设置属性

我有一个“用户”集合,有一些字段(名称,名字,login名,密码…) 我想将用户名和密码保存在名为“local”的子文档中(对于本地连接,将来我可以有一个名为“facebook”或“google”的子文档…) 那么,这里是mongo中的一个文档的结构: db.User.find(){ "__v": 0, "_id": ObjectId("5342b25940bcab2d1d71e04a"), "active": true, "address": "juddegaass, 2A", "api_key": "3cead67add74395ce4d1dfcdd3ea4979", "city": "Kehlen", "country": "LU", "create_date": ISODate("2014-04-07T14:12:41.104Z"), "credit": 0, "email": "admin@company.com", "firstname": "Admin", "lastname": "Istrator", "local": { "email": "admin@company.com", "password": "$2a$08$Y7GorE3UhceNhPzvAdv7X.wDNxp80snHdng0hq9r1AePqRW1iHU5i" }, "role": "su", "uptade_date": ISODate("2014-04-07T14:12:41.104Z"), "zip": "8281" } 我有一个表单来更新用户,我的问题是当我提交这个表单。 我得到一个错误: TypeError: Cannot set property 'email' of undefined 这是我的节点用户映射器中的更新function: var toUpdate […]

如何通过mongoose在mongodb中设置复合主键

我想通过mongoose在mongodb中为集合中的两个字段设置主键。 我知道在mongodb设置复合主键为 db.yourcollection.ensureIndex( { fieldname1: 1, fieldname2: 1 }, { unique: true } ) 但我正在使用mongoose来处理mongodb我不知道如何从mongoose设置复合主键 更新 我使用了mySchema.index({ ColorScaleID: 1, UserName: 1}, { unique: true }); 看我的代码 var mongoose = require('mongoose') var uristring ='mongodb://localhost/fresh'; var mongoOptions = { db: { safe: true } }; // Connect to Database mongoose.connect(uristring, mongoOptions, function (err, res) { if (err) […]

Mongoose查询来查找多个数组中的匹配元素

我有这样的数据: { name:'string' A: [ { D: [] } ], B:[ { D:[] } ], C:[ { D:[] } ] } 我想通过A , B和C每个数组中的所有D数组search一个匹配。 我做了这个查询,但总是返回一个空的数组,所以我不认为我做对了。 model.find({'name':nameVar, $elemMatch:[ {'A':{'A.D':{$in:[matchVar]}}}, {'B':{'B.D':{$in:[matchVar]}}}, {'C':{'C.D':{$in:[matchVar]}}}]},function(err,data){… 如何返回A , B和C中matchVar在D内的所有元素? 编辑: 看起来这是不可能的? https://groups.google.com/forum/#!topic/mongodb-user/rUHK43Xtp88 但我仍然坚持要一个答案

MongoDB中的$ nin的非严格行为

在MongoDB中是否有非严格的$ nin版本? 例如 假设我们有一个名为User的模型和一个名为Task的Model var TaskSchema = new Schema({ user_array: [{user: Schema.ObjectId}], }); 一个快速的例子就是这个 task1 : [user1, user2, user4, user7] task2 : [user2, user 5, user7] 如果我有一个用户列表 [user1, user7] 我想select在user_array重叠最less的任务,在这种情况下task2,我知道$ nin严格返回任务包含user1或user7,但我想知道是否有操作$ nin是非严格。 另外,我可以为我写一个DPfunction 任何意见,将不胜感激 谢谢

MongoError:修饰符不允许使用字段名称重复

注:据我所知,我不是在做stream行的东西。 我有这第一次工作正常,但如果客户端调用这个方法两次,而不刷新页面之间的调用,我会在标题中的错误。 scenarios.findOne({'_id':partialUpdate._id},function(err,back){ if(back){ for(var p in partialUpdate){ if(partialUpdate.hasOwnProperty(p)){ back[p] = partialUpdate[p]; } } back.save(function(err,product,numberAffected){… 什么是刷新页面,停止这种错误发生? 我怎么知道我复制了哪个域名,这样我就可以阻止这个错误? 以下是包含第一组和第二组发送数据( partialData )的服务器输出的副本,它与( back )合并的服务器数据以及保存的数据( product ),以及错误消息 http://pastebin.com/izbkZV1h 第一组发送对象: { sortOrder: 0, title: 'sdfsdf', description: '', contentType: 'false', _id: '534ec5c98c4bf1be305fee1c', __v: 8, groupSharing: [], sharingWith: [], isPublic: false, content: false, attributes: [], metrics: [ { type: 'viewCount', value: […]

未能加载c ++ bson

我是新来的整个Nodejs,MongoDB,mongoose的世界。 我只是试图按照一些教程开始,我一直得到这个“无法加载c + + bson扩展,使用纯JS版本”错误,如果我尝试启动任何脚本与引用mongoose。 我已经尝试了一切,我可以谷歌修复它,没有任何工作,包括: 重新安装构build要领 重新安装mongoDB 将nodejs降级到0.10.22 删除node_modules目录 清理npmcaching 我不知所措 有人可以帮我吗? 我只想回到学习! 我在Ubuntu 13服务器上运行nodejs和MongoDB。 这是我的简单脚本。 var mongoose = require("mongoose"); mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function () { var UsersSchema = mongoose.Schema({ name: String }); var User = mongoose.model('User', UsersSchema); var user = new User({ name: "SomeName" }) user.save(); […]