Articles of mongodb

mongoose双向模式/多对多的关系

mongoose相当新,所以我正在寻找最好的方法来做到这一点。 我有两个模型: Users和Companies 。 用户可以有很多公司,公司可以有很多用户。 现在我的公司Schema看起来像这样: CompanySchema = new Schema name: type: String unique: true slug: type: String users: [ type: Schema.Types.ObjectId ref: 'User' ] 然后我可以使用.populate('users')来获取关联用户的列表。 那里没问题。 我想知道的是,让所有companies与user相关联的最有效/最好的方法是什么? 我不想像上面那样做,因为列表可能会不同步。 有没有办法,当我更新公司的用户,用户的公司也更新? 理想情况下,我可以做User.find().populate('companies')

使用mongodb作为存储的Node.js集群和socket.io

我有一个问题,build立群集node.js / socket.io应用程序,与socket.io存储,不是基于Redis,而是在MongoDB。 我需要提到的是我的应用程序使用Mongo来存储数据。 所以我不想设置另一个数据库只是为了让soket.io跨多个进程工作。 我发现一个选项 – mong.socket.io ,但看起来我不能使这个工作与节点集群。 我使用节点:0.10.10 ,与socket.io:0.9 我正在寻找任何解决scheme,使我可以使用MongoDB作为socket.io存储在独立的进程上运行。 依靠你,谢谢。

Jade的JS不输出对象属性,但输出_id和__v罚款?

我有一个与Jade模板引擎或其他问题的问题; 我不知道。 当我遍历一个对象并输出它的属性时,它似乎不会输出“country”属性,但输出“ id”和“ _v”属性很好。 我期望“部分”属性不输出,因为它本身是一个对象,但它没有在控制台日志中说什么。 架构: var CSVSchema = { country: {type: String} , sections: [ { title: {type: String} , sub_sections: [ { title: {type: String} , value: {type: String} } ] } ] }; search控制器:这在mongodb数据库中search国家(使用mongoose),并呈现翡翠模板传递封闭的属性。 exports.query = function (req, res) { var query = req.body.query; results.find({"country": query}, function (err, data){ res.render('search/query', { […]

Mongoose更新文档与findByIdAndUpdate失败

尝试使用findByIdAndUpdate更新MongoDB文档: var landmarkModel = mongoose.model('landmark', landmarkSchema, 'landmarks'); var lm = new landmarkModel(); //adding data to schema here, like: lm.name = req.body.name; lm.findByIdAndUpdate(req.body._id, lm, function (err, landmark) { if (err) console.log(err); else{ console.log(null, landmark); } }); 返回错误: Object lm has no method 'findByIdAndUpdate' 我已经尝试用landmarkModel.findByIdAndUpdate交换lm.findByIdAndUpdate值,但这也不起作用。 我究竟做错了什么?

mongoose连接工作,mongo shell连接失败

用mongoose我使用一个url连接到数据库: console.log(mongourl); mongoose.connect(mongourl); mongoose.connection.on('connected', function() { console.log('mongodb: connected'); }); 在控制台中: mongodb://localhost:27017/appname_development mongodb: connected 但是当我尝试连接交互式提示时: $ mongo mongodb://localhost:27017/appname_development 它爆炸了: Wed Oct 2 14:43:57.390 Assertion failure _setName.size() src/mongo/client/dbclientinterface.h 211 0x10017116b 0x100135396 0x100068356 0x100129bab 0x10010f92f 0x10024b2fa 0x11b21ae06362 0x11b21ae0ce93 0x11b21ae400c9 0x11b21ae0c76e 0 mongo 0x000000010017116b _ZN5mongo15printStackTraceERSo + 43 1 mongo 0x0000000100135396 _ZN5mongo12verifyFailedEPKcS1_j + 310 2 mongo 0x0000000100068356 _ZN5mongo16ConnectionString5parseERKSsRSs + 1878 […]

从Express / node.js Web应用程序预填充HTML / Jade

我有一个使用Express构buildnode.js的Web应用程序。 我正在使用Jade模板文件进行HTML显示。 在其中的一个显示中,我想要预先填充数据的各个字段。 数据存储在一个mongodb会话存储中,以及数据库中的一个单独的集合中。 我宁愿使用会话数据预先填充HTML / Jade显示中的这些字段。 我怎么能这样做(如果可能的话)?

如何从Mongoose查询返回值

我正在做一个注册部分,在input数据到mongo之前进行一些服务器端validation。 我对mongoose是很新的,并且在返回数据到完成所有注册过程的方法时遇到麻烦。 在我的机车控制器中,我有一个包装一切的方法来开始注册过程。 auth = new Authenticator(); auth.signUp(this.req.body); 在我的auth对象中,signUp只是在创build一个新用户之前通过validation数据。 一个validation是,在数据库中已经没有重复的电子邮件了。 this.signUpUser = function(user) { if(this.isNotDuplicate(user.email) { //continue doing whatever needs done to the data afterwards } else { response['error'] = True response['response'] = "duplicate email" } } 我正在尝试的一种方法是寻找匹配并返回true或false的电子邮件。 this.isNotDuplicate = function(email) { query = user.findOne({ 'email': email }); query.exec(function(error, user) { if(error) { console.log(error); } […]

编写node.js apicallback与否

伙计,假设一个使用NOSQL后端(mongo或dynamo)的NodeJS(restify.js)编写的API。 当你有一个阻塞操作,比如读写文件时,总是用非阻塞的方式写东西的好主意……但是,当你的操作需要几毫秒才能完成时,你应该使用callback函数吗? ? 设想一下诸如https://api.foo.com/v1/bar/baz之类的 api调用,将其路由到一个能够从NoSQL引擎快速响应的函数,以JSON格式化响应并将其放回到浏览器中。 在这种情况下,你应该使用回叫? 编写这个扩展到数百个并发请求。 谢谢!

从nodejs访问mongodb – 普通的CRUD方法

我是mongodb和nodej的新手。到目前为止,我已经能够创build一个新的mongodb数据库并通过nodejs访问它。 不过,我想写一些通用的访问集合的方法(CRUD),因为我的集合列表将会增加。 例如,我有一个包含书籍和作者的集合 var books = db.collection('books'); var authors = db.collection('authors'); exports.getBooks = function(callback) { books.find(function(e, list) { list.toArray(function(res, array) { if (array) callback(null, array); else callback(e, "Error !"); }); }); }; 与此类似,我也有获取作者的方法。现在这个过于重复了,因为我想为CRUD操作添加方法。 有没有一种方法可以为我的所有collections共同/通用的CRUD方法?

如何使用login密码在NodeJS中启动本地Mongo

我想弄清楚如何使用本地节点mongo驱动程序连接到我的mongodb数据库,我有两个问题: 我的密码包含一个@符号,使其打破正常的用户:传递@主机连接string格式 如何从下面列出的数据库中列出数据库? 任何想法如何解决这个问题? 这是一个不起作用的尝试: var Mongo = require('mongodb'); var server = new Mongo.Server('mongodb://myhost', 27017); var db = new Mongo.Db('test', server); db.open(function(err, db) { console.log(err); //unable to connect });