Tag: mongoose

如果没有发现与.find()mongoose做什么

我将一些数据存储在一个mongodb中,并使用js / nodejs和mongoose访问它。 我可以使用.find()在数据库中find一些东西,这不是问题。 问题是如果没有东西,我想做别的事情。 目前这是我想要的: UserModel.find({ nick: act.params }, function (err, users) { if (err) { console.log(err) }; users.forEach(function (user) { if (user.nick === null) { console.log('null'); } else if (user.nick === undefined) { console.log('undefined'); } else if (user.nick === '') { console.log('empty'); } else { console.log(user.nick); } }); }); 当我做某些事情时,这些都不会引起act.params的缺陷。 当发生这种情况时,我什么也没有得到任何控制台,但是我确实得到了user.nick,当它实际存在的时候,它就可以很好的logging下来。 我只是试图做到这一点倒过来: UserModel.find({ […]

从Mongoose的“findOneAndUpdate”方法返回的JavaScript对象中删除属性

我在Node.js上用JavaScript编写了一个简单的服务器,这个服务器允许用户pipe理他们的帐户(基本的CRUDfunction等等)。 服务器连接到一个MongoDB实例,使用Mongoose来pipe理连接和数据。 Mongoose中的模型有一个名为findOneAndUpdate()的方法,它的确如你所想的那样:查询返回的第一个文档的数据库,并根据传递的参数更新所述文档。 然后它将新的,更新的文档返回给用户。 它完全按照预期工作,我没有问题。 但是,我不希望返回所有的用户数据。 具体来说,我想省略_id和password字段。 由于MongoDB返回的对象是一个基本的JavaScript对象,我认为我可以通过调用delete object.attribute来删除这些属性。 不幸的是,由于某种原因,这是行不通的。 这是我的代码,更新用户信息: case "update": User.findOneAndUpdate({"token": header.token}, body, function(err, user) { if (err) { return callback(err); } else { delete user["_id"]; delete user["password"]; return callback(null, new SuccessEnvelope(user)); } }); break; 为了清楚起见, Envelope (在这种情况下是SuccessEnvelope )是客户端和服务器为了促进通信而需要的信息束。 类似于TCP数据包。 无论如何,我离题了 例如,如果我想更新我的用户名从“joe_bob”到“jim_bob”,我会发送到服务器: {"header": "type": "user", "method": "update", "token": "IM_A_TOKEN_GAIS_SRSLY"}, "body": {"username": "jim_bob"}} […]

Mongoose更改模式格式

我们正在快速开发一个使用Mongoose的应用程序,而且我们的模式经常变化。 我似乎无法找出正确的方法来更新现有文档的模式,而不会将它们吹走并从头开始重新完成。 我遇到http://mongoosejs.com/docs/api.html#schema_Schema-add ,这看起来是正确的。 几乎没有关于如何真正实现这个的文档,这使得对于MongoDB的新手来说很难。 我只是想添加一个名为启用的新字段。 我的模式定义是: var sweepstakesSchema = new Schema({ client_id: { type: Schema.Types.ObjectId, ref: 'Client', index: true }, name: { type: String, default: 'Sweepstakes', }, design: { images: { type: [], default: [] }, elements: { type: [], default: [] } }, enabled: { type: Boolean, default: false }, schedule: { start: […]

如何在Mongoose虚拟属性中使用asynchronous代码?

我试图在不同的集合(而不是embedded的文档)中关联文档,而在Mongooose中有一个问题 ,我试图通过延迟加载关联的文档, mongoose网站 。 问题是虚拟的getter将函数作为参数,并使用virtual属性的返回值。 当虚拟机不需要任何asynchronous调用来计算它的值时,这是非常好的,但是当我需要进行asynchronous调用来加载其他文档时,虚拟机不起作用。 以下是我正在使用的示例代码: TransactionSchema.virtual('notebook') .get( function() { // <– the return value of this function is used as the property value Notebook.findById(this.notebookId, function(err, notebook) { return notebook; // I can't use this value, since the outer function returns before we get to this code }) // undefined is returned here as […]

在mongodb上为每个集合使用多个模式

我想在MongoDB中为每个集合使用多个模式,如何使用它….? 当我尝试运行它时,它给了我这个错误: 错误: OverwriteModelError:编译后无法覆盖allUsers模型。 OverwriteModelError:编译后无法覆盖checkInOut模型。 下面是我的schema.js var mongoose = require('mongoose'); var Schema = mongoose.Schema , ObjectId = Schema.ObjectId; var checkInInfoSchema= new Schema({ name:String, loginSerialId:Number }); var loginUserSchema = new Schema({ sn : { type: Number, unique:true } ,uname: {type:String, unique:true} ,pass:String }); var registerUserSchema = new Schema({ sn : { type: Number, unique:true } , […]

如何获取mongoose.js中最新和最旧的logging(或者只是它们之间的时间跨度)

基本问题 我有一堆logging,我需要得到最新(最近)和最旧(最近)。 当谷歌search时,我发现这个话题 ,我看到了几个查询: // option 1 Tweet.findOne({}, [], { $orderby : { 'created_at' : -1 } }, function(err, post) { console.log( post ); }); // option 2 Tweet.find({}, [], {sort:[['arrival',-1]]}, function(err, post) { console.log( post ); }); 不幸的是,他们都错误: TypeError: Invalid select() argument. Must be a string or object. 链接也有这个: Tweet.find().sort('_id','descending').limit(15).find(function(err, post) { console.log( post […]

mongoosefind/更新子文档

我有以下模式的文件夹 : var permissionSchema = new Schema({ role: { type: String }, create_folders: { type: Boolean }, create_contents: { type: Boolean } }); var folderSchema = new Schema({ name: { type: string }, permissions: [ permissionSchema ] }); 所以,对于每个页面我都可以拥有很多权限。 在我的CMS中有一个面板,我列出了所有的文件夹和他们的权限。 pipe理员可以编辑一个权限并保存。 我可以使用其权限数组轻松地保存整个文件夹文档,其中只有一个权限被修改。 但我不想保存所有的文档(真正的模式有更多的字段),所以我这样做: savePermission: function (folderId, permission, callback) { Folder.findOne({ _id: folderId }, function (err, […]

mongooseautoReconnect选项

我试图通过Mongoose来设置MongoDB自动重新连接function。 我试图通过这个选项的每一个方法都没有效果,或者至lessreconnected事件没有被排除。 我试过了: mongoose.createConnection("mongodb://localhost:27017/test", { auto_reconnect: true }); mongoose.createConnection("mongodb://localhost:27017/test", { autoReconnect: true }); mongoose.createConnection("mongodb://localhost:27017/test", { server: { auto_reconnect: true } }); mongoose.createConnection("mongodb://localhost:27017/test", { server: { autoReconnect: true } }); 如果其中一个是正确的, reconnected事件应该被触发,并且应该在控制台中logging一条消息,但是这从来就不会发生。 如果在重新连接之前有延迟,有没有人知道如何configuration它? 提前致谢 对于任何人来看这个 ,在mongoose存储库看看这个和这个问题。

nodejs mongodb对象id到string

在nodejs中,使用mongodb,mongoosejs作为orm 我正在这样做 我有一个模型,用户 User.findOne({username:'someusername'}).exec(function(err,user){ console.log(user) //this gives full object with something like {_id:234234dfdfg,username:'someusername'} //but console.log(user._id) //give undefined. }) 为什么? 如何获得_idstring呢?

Mongoose删除文件中的数组元素并保存

我在模型文档中有一个数组。 我想根据我提供的密钥删除该数组中的元素,然后更新MongoDB。 这可能吗? 这是我的尝试: var mongoose = require('mongoose'), Schema = mongoose.Schema; var favorite = new Schema({ cn: String, favorites: Array }); module.exports = mongoose.model('Favorite', favorite, 'favorite'); exports.deleteFavorite = function (req, res, next) { if (req.params.callback !== null) { res.contentType = 'application/javascript'; } Favorite.find({cn: req.params.name}, function (error, docs) { var records = {'records': docs}; if (error) […]