Articles of node.js

Node.JS用MochatestingDOM吗?

我想在我的Node.JS应用程序中使用Mochatesting框架做一些简单的视图testing… 例如,我想testing一下页面上的<ol>是否有n <li>孩子,给定我在testing中设置的logging数。 我尝试使用杏做这个,当我得到它的工作,当它失败的错误信息是非常无益的…而且,它并不总是工作。 我所喜欢的是testingHTML元素的响应主体的简单方法,所以我可以确定它们是否与他们应该显示的数据匹配。 这是我目前的状态testing: https : //gist.github.com/2330685 任何人都知道我可以做到这一点?

Mongsert的Upsert(node.js和mongodb)

我正在学习node.js和mongodb。 我在我的应用程序中使用mongoskin模块,但我似乎无法得到“upsert”function工作。 我读过github上的(非常不透明的)mongoskin指南。 以下是我迄今为止所尝试的: // this works. there's an insert then an update. The final "x" is "XX". db.collection("stuff").insert({a:"A"}, {x:"X"}); db.collection("stuff").update({a:"A"}, {x:"XX"}); // this does NOT work. I thought it would do an upsert, but nothing. db.collection("stuff").update({b:"B"}, {y:"YY"}, true); 我如何创build“更新或插入,如果不存在”function?

什么是在Heroku上存储二进制文件的好方法?

我在Heroku上使用Node.js,并使用MongoHQ来处理数据。 我的应用程序需要能够存储图像文件,从用户上传或从其他网站下拉。 我不想要附加的image processing或类似的东西,我只需要能够存储和服务他们。 如果我只是从我的Node应用程序中引用它们作为数字ID或类似的名称,那就好了。 由于这是一个自费项目,所以我希望尽可能便宜(我不想为附加费支付大量费用),为了简单起见,为了简单起见,请将所有内容保存在Heroku中(虽然后者不是要求,只是一个偏好)。 我知道我可以将它们作为二进制文件存储在Mongo中,但是我正在寻找更高效的存储,并希望每兆存储更便宜。

Node.js:crypto.pbkdf2密码为hex

我目前使用以下设置注册新用户: // creates a new user app.post('/users', function(req, res) { // create new user var user = new User(); // assign post user.username = req.body.username; user.email = req.body.email; crypto.randomBytes(32, function(err, buf) { if (err) throw err; user.salt = buf.toString('hex'); crypto.pbkdf2(req.body.password, user.salt, 25000, 512, function(err, encodedPassword) { if (err) throw err; user.password = (encodedPassword.toString('hex')); // this […]

适用于coffeescript中的array.forEach()的语法

我有一个下面的代码在coffeescriptrecursion列出目录(从JavaScript转换): fs = require 'fs' walk = (dir, done) -> results = [] fs.readdir dir, (err, list) -> return done(err) if err pending = list.length return done(null, results) unless pending list.forEach (file) -> file = "#{dir}\\#{file}" fs.stat file, (err, stat) -> if stat and stat.isDirectory() walk file, (err, res) -> results = results.concat(res) done null, […]

小写与玉模板

我在一个nodejs项目中使用jade 找不到如何定义filter 我有我想显示在select框,小写选项值和大写选项文本的类别 select each cat in categories option(value="lowercase(#{cat})") uppercase(#{cat}) 任何想法 ?

Node.js CMS选项比Calipso更加活跃和有特色?

经过相当多的Node.js CMS希望之后,似乎Calipso是迄今为止最活跃/发展良好的CMS。 在这个时候,我是否错过了更强大和成熟的其他select或项目?

使用req.body通过Mongoose更新和/或添加数组元素属性?

我有以下文件: { "_id" : ObjectId("503b83dfad79cc8d26000004"), "pdfs" : [ { "title" : "Test document", "pdf_id" : ObjectId("504f6793ce351a595d000004"), "created_at" : ISODate("2012-09-11T16:32:19.276Z") }, { "title" : "Some other doc", "pdf_id" : ObjectId("502bf124b4642341230003f0"), "created_at" : ISODate("2012-09-11T11:34:19.276Z") } ] } 现在通过req.body传入表单,我有2个字段: title和description 。 我想更新title并为指定的pdf_id插入description ,我该怎么做? 所以最后,我的文档现在看起来像: { "_id" : ObjectId("503b83dfad79cc8d26000004"), "pdfs" : [ { "title" : "This is an UPDATED […]

如何在MongoDB中知道字段是datetypes?

我正在研究NodeJS + Mongodb应用程序。 我刚刚使用控制台客户端将一条logging插入到mongodb中: db.user.save({myId:11111, myDate: ISODate("2012-04-30T00:00:00.000Z")}) 事情是,当我在node.js中时,我需要知道“myDate”字段是否真的是datetypes,以便执行数据范围查询等。 我尝试了以下。 1.在mongo客户端控制台上: typeof db.user.myDate –> It returns "Object" db.user.myDate instanceof Date –> It returns "false" 2.在我的Nodejs代码上, 我想获得调用这个getTypeMembers函数的types。 (obj来自db查询) exports.getTypeMembers = function(obj) { obj = JSON.parse(JSON.stringify(obj) for(var _k in obj){ if(Object.prototype.toString.call(obj[_k]) === '[object Array]' ) { obj[_k] = "Array"; } else if(typeof(obj[_k])=="object"){ obj[_k] = this.getTypeMembers(obj[_k]); }else{ obj[_k] = […]

Node.js和mongoose(mongodb)错误无法读取null属性

我有一个findOne查询,当我validation,如果它返回一个空白的文档,我会抛出一个错误,说'不能读取属性'用户名'null'。 当我尝试访问doc.username if(!doc.username){ 我的代码: function checkAccDb(username, password) { console.log(2); /* Check if accounts exists in db */ db.findOne({username: username}, function(err, doc){ console.log(3); if(err) throw err; if(!doc.username) { add2stack(username, password); } else if(doc.status == 200) { end(username, password, 1000); } else if(doc.status == 401) { if(doc.password == password) end(username, password, 401); else add2stack(username, password); } else […]