Articles of mongoose

在所有使用摩卡的testing之后,在哪里删除数据库并closures连接

我试图找出到哪里放置一个函数来删除数据库,并在所有testing运行后closures连接。 这里是我的嵌套testing: //db.connection.db.dropDatabase(); //db.connection.close(); describe('User', function(){ beforeEach(function(done){ }); after(function(done){ }); describe('#save()', function(){ beforeEach(function(done){ }); it('should have username property', function(done){ user.save(function(err, user){ done(); }); }); // now try a negative test it('should not save if username is not present', function(done){ user.save(function(err, user){ done(); }); }); }); describe('#find()', function(){ beforeEach(function(done){ user.save(function(err, user){ done(); }); }); it('should find […]

上传和存储图像

是的,我知道使用Node.js,Express和Mongoose上传图像以及如何使用node.js将图像存储在mongodb中? 但是解决这些问题并不是我想达到的。 我想能够使用一个模式的图像存储在二进制的数据库(MongoDB与Mongoose)。 那么,你知道任何使用组合Node.js,Express和Mongodb的应用吗? 最好的是,如果有这个组合+玉的任何应用程序,但我想这是要求很多。 提前致谢!

mongoose纲要参考

有可能有一个架构引用Mongo内的另一个架构? 我已经得到了下面的内容,我希望Line架构中的用户成为UserSchema中的用户 var UserSchema = new Schema({ name: {type: String, required: true}, screen_name: {type: String, required: true, index:{unique:true}}, email: {type: String, required: true, unique:true}, created_at: {type: Date, required: true, default: Date} }); var LineSchema = new Schema({ user: [UserSchema], text: String, entered_at: {type: Date, required: true, default: Date} }); var StorySchema = new Schema ({ […]

让所有的领域需要mongoose

mongoose似乎默认使所有的领域不需要。 有没有办法使所有的字段不需要改变: Dimension = mongoose.Schema( name: String value: String ) 至 Dimension = mongoose.Schema( name: type: String required: true value: type: String required: true ) 它会变得非常难看,因为我有很多这些。

mongoose:检测插入的文件是否重复,如果是的话,返回现有的文件

这是我的代码: var thisValue = new models.Value({ id:id, title:title //this is a unique value }); console.log(thisValue); thisValue.save(function(err, product, numberAffected) { if (err) { if (err.code === 11000) { //error for dupes console.error('Duplicate blocked!'); models.Value.find({title:title}, function(err, docs) { callback(docs) //this is ugly }); } return; } console.log('Value saved:', product); if (callback) { callback(product); } }); 如果我检测到一个重复试图插入,我阻止它。 但是,当发生这种情况时,我想返回现有的文档。 […]

forEach在Node.js中使用生成器

我正在使用Koa.js框架和Mongoose.js模块。 通常从MongoDB得到一个结果我的代码是这样的: var res = yield db.collection.findOne({id: 'my-id-here'}).exec(); 但是我需要为名为'items'的数组的每个元素执行这一行。 items.forEach(function(item) { var res = yield db.collection.findOne({id: item.id}).exec(); console.log(res) // undefined }); 但是这个代码不能像yield中的函数那样运行。 如果我写这个: items.forEach(function *(item) { var res = yield db.collection.findOne({id: item.id}).exec(); console.log(res) // undefined }); 我也没有得到resvariables的结果。 我试图使用“ generator-foreach ”模块,但没有像这样工作。 我知道这是我对Node.js的语言素养缺乏了解。 但是,你们能帮我find办法吗?

NodeJS + Mongoose:更新Mongoose模型的所有字段

我正在使用Node,MongoDB和Mongoose构buildapi。 有一件事情是让我烦恼的是,你似乎无法一次设置多个字段: app.put('/record/:id', function(req, res) { Record.findById(req.params.id, function(err, doc) { if (!err) { doc.update(req.params); doc.save(); … 但是,您似乎必须制定更新查询并在Model对象而不是文档对象上运行它。 除非你想分配单独的属性,并在最后运行save()。 有没有办法完成这个,而不必编写一个Mongo查询?

蓝鸟Promisfy.each,for循环和if语句?

现在,父对象循环( m < repliesIDsArray.length )在第一个findOne触发之前完成,所以这全部只循环通过respondIDsArray.asynchronous的最后一个元素。 这个代码集的promisified版本的正确语法是什么? 对promisification新来说,想知道如何启动这个promisify +循环通过数组+帐户的if语句.. 蓝鸟是必需的,而Promise.promisifyAll(require("mongoose")); 叫做。 for(var m=0; m<repliesIDsArray.length; m++){ objectID = repliesIDsArray[m]; Models.Message.findOne({ "_id": req.params.message_id}, function (err, doc) { if (doc) { // loop over doc.replies to find the index(index1) of objectID at replies[index]._id var index1; for(var i=0; i<doc.replies.length; i++){ if (doc.replies[i]._id == objectID) { index1 = i; break; } […]

Mongoose save()不更新数据库文件中数组的值

我正尝试使用GUI更新集合(单位)中的文档,并且在更新之后,我想更新集合(用户)中的值(user.Units,它是单元名称的数组)。 如果数组长度只是1个元素,它会得到更新,并且也显示在数据库中,一切正常,但是当Array of Units有多个元素时,我尝试通过for循环更新它,它显示它被更新,但是当我检查数据库,它仍然没有更新。 我真的不知道为什么我更新数据库时,通过循环更新值。 整个编辑和更新function: – edit_unit: function (req, res, next) { var Data = req.body; Client_data.Unit.findById(req.params.unitId, function (err, unit) { var error = false; if (err) { error = err; } else if (!unit) { error = "FATAL: unable to look up Unit #" + req.params.unitId; } else { switch(req.body.name) { case 'Icon': […]

Mongoose.js通过一个connect()调用创build到MongoDB的多个连接

我正通过Node.js Express应用程序通过Mongoose与MongoDB进行单一连接: var express = require('express'); var mongoose = require('mongoose'); mongoose.connect('localhost', 'test'); 然后定义模式,然后定义模型,最后定义从数据库中提取所有用户的控制器: app.get('/users', function (req, res) { return User.find(function (err, users) { if (!err) { return res.send(users); } }); }); 这些数据库连接在应用程序启动期间打开,并且在node.js应用程序的持续时间内保持打开状态。 我困扰的是为什么我有5个连接打开? 只要closuresnode.js应用程序,所有5个连接都closures。 相关说明 :对于REST API服务器,最好始终打开MongoDB连接。 或者每个用户请求手动打开/closures连接更好? d