Tag: mongoose

如何将JavaScript函数存储到mongoose的文档中?

我需要将一些数据和相关functions存储到mongodb document 。 {name:"data1",event:function(){ /* some code */ }} {name:"data2",event:function(){ /* some other code */ }} 我正在为我的项目使用mongoose.js ORM 。 我应该如何为此编写我的schema ? 从mongoose引导引用 允许的SchemaTypes是String , Number , Date , Buffer , Boolean , Mixed , ObjectId和Array 。 但是,如果你检查mongodb允许的datatypes ,你可以find如mongo-db-data-types-article所述的存储js函数的方法 Code类是一个特殊的类,让你将JavaScript函数存储在MongoDB中,也可以提供一个范围运行方法 我不能在mongoose上find上面的数据types。 有任何想法吗?

JavaScript方法链接,从数组中添加方法

嗨,我想知道你是否可以帮助我dynamicbuild立一个方法链,我怀疑这很容易做到,如果你知道如何… 使用mongoose和node.js我正在查询一个mongo数据库。 我使用一个函数来传递一个对象,如下所示: transaction = { model: a mongoose model req: Express.js request object res: Express.js response object query: a mongo db query eg, {_id:xxxxx} populate: [ { field: 'name_of_doc_field' select: 'field1,field2' } ] } 我dynamic构build查询,并且在函数中,我不知道需要填充多less个字段,或者是否需要偏移量或限制。 我想链接我的发现: transaction.model.find(transaction.query).skip(offset).limit(limit).exec(function(err, collection_obj){…}) 我如何dynamic构build这个链,我需要testing一个偏移量是否在testing对象中提供,如果是将.skip方法添加到链中等等,并且使用填充方法,将会有一个项目数组,该数组中的每个项目都需要添加到链中的新的填充方法。 最后,我需要一个exec方法到链的末尾。 感谢您的帮助提前 // Generated by CoffeeScript 1.4.0 module.exports = { findMany: function(transaction) { var collection_obj, […]

NodeJS – Mongoose(对象没有方法“id”)

当我在我的应用程序中尝试以下代码时: 应用程序/模型/ Post.coffee mongoose = require "mongoose" CommentModel = require "./Comment" Comment = CommentModel.Schema Schema = mongoose.Schema Post = new Schema { title: String, slug: {type: String, index: { unique: true, dropDubs: true }}, content: String, author: String, tags: [String], comments: [Comment], created: { type: Date, default: Date.now } } Post.statics.findBySlug = (slug, cb) -> […]

mongoose分开的文件,而embedded架构?

我想在用户创build一个新文档之后将一个文档_id保存到另一个模式的数组中。 简而言之:用户保存一个videoURL,我想将video的文档_id保存到用户架构中的一个数组中。 我很难搞清楚如何做到这一点。 这里是我的模型文件: videos.js: // Video Model // ————- var mongoose = require('mongoose'); var Schema = mongoose.Schema; // Embedded document schema var NotesSchema = new Schema({ timecode : String, text : String }); // Main schema var VideoSchema = new Schema({ title : String, url_id : String, notes : [NotesSchema] }); module.exports = mongoose.model('Note', […]

在快递中间件中重用mongoose对象的模式

给定一个nodejs,mongoose,mongodb,expressjs设置,我们有权限/安全相关的路由来validation一个特定的请求。 例如: permissionUtils.checkStudentWritePermissions = function(req, res, next){ //load this student from the mongoose db //ensure the current user has permission to update this student } server.put("/api/student/:studentId/enroll", permissionUtils.checkStudentWritePermissions, function(req, res, next){ //load student from the database, validate the changes //update student in mongodb, send new version back to user }); 中间件很有用,因为我们确保当前用户有权在每种情况下更新学生。 (代码重用等)你会注意到,在这两个例子中,我正在从MongoDB中加载学生。 有一个可以接受的模式来避免这种双重加载? 某种请求循环caching或传递模型的stream畅方式?

一个mongoosecollections会减慢另一个吗?

我正在运行一个网站,我希望用户能够上传和存储图像。 我意识到,build议使用像amazon s3这样的外部服务来存储图像,但是我现在不想为此付费。 我被告知的另一种select是为图像检索创build一个API。 但是,不出现mongoose允许同时进行多个数据库连接,所以最简单的方法就是为我的图像使用单独的集合。 我的问题是,将使用一个单独的图像集合仍然减慢访问我的其他集合? 理想情况下,我希望它是分开的,以便即使沉重的图像stream量将不会影响我的其他collections,但我不知道是否是这种情况… … – 有人能为我澄清这个吗? 谢谢

在MongoDB中执行非阻塞评估读取

我想通过node.js客户端在MongoDB服务器上运行javascript代码: db.eval("function(x){ return x*10; }", 1, function (err, retval) { console.log('err: '+err); console.log('retval: '+retval); }); 这工作正常。 但是文档说db.eval()发出一个写locking,所以没有别的东西可以读取或写入数据库。 我不要那个。 它也说eval没有这个限制,但是我不知道在哪里find它。 从他们谈论的方式来看,似乎普通的eval只能在mongo shell中使用,而不能在客户端使用。 所以:我怎样才能在mongodb服务器上运行这些存储过程而不阻塞一切?

在Mongoose中创build具有唯一属性的文档

我正在尝试在集合中保存具有独特属性的文档。 所以,如果有人试图用{name:'kitty'}保存一只小猫,而且这个名字已经存在,它将失败,然后重试{name:'kitty1'}(然后'kitty2'等)。 我真的无法弄清楚这样做的好方法,有什么想法吗? 这是我到目前为止(不起作用)。 var kittenSchema = new Schema ({ name: {type: String, index: {unique: true}} }) var Kitten = mongoose.model('Kitten', kittenSchema); var kitten = new Kitten({ name: 'kitty' }); kitten.save(function(err, kitten){ if (err){ saveKitten(kitten, 1, function(err, kitten){ if (err){ console.log("Damn, no kitten"); } else { console.log("New kitten " + kitten.name + "saved."); }); } […]

NodeJS,Mongoose – 插入数据时的重复条目

我有Mongoose的NodeJS,我正在访问一个API来检索数据。 我有一个Schema如下。 var dataSchema = new Schema({ id:Number, name:String )); 而我正在使用下面的代码来插入。 var d = Data.find({id:data.id}, function(error, curr_data) { if(curr_data.length == 0) { // check to make sure only unique entries are entered console.log(" Inserting : " + curr_data.name); new Data(data).save(); } }); 但是,当我检查我的Mongo DB,我仍然可以看到重复的条目。 有没有其他方法?

Mongooserecursion查询父引用

我正在尝试做这个mongo例子,但是在mongoose中。 mongoose似乎更为复杂。 可能我正在试图在一个圆形孔中安装一个方形钉? 这个例子来自http://www.codeproject.com/Articles/521713/Storing-Tree-like-Hierarchy-Structures-With-MongoD (具有父参照的树结构) 我试图build立一条path。 var path=[]; var item = db.categoriesPCO.findOne({_id:"Nokia"}); while (item.parent !== null) { item=db.categoriesPCO.findOne({_id:item.parent}); path.push(item._id); } path.reverse().join(' / '); 谢谢!