使用jasmine和node.jstestingweb API

我们编写了一个RESTful Web API,它使用node.js响应GET和PUT请求。 我们在testingAPI时遇到一些困难。 首先,我们使用了Zombie.js ,但没有很好的logging,所以我们无法得到PUT请求: var zombie = require("zombie"); describe("description", function() { it("description", function() { zombie.visit("http://localhost:3000/", function (err, browser, status) { expect(browser.text).toEqual("A") }); }); }); 之后,我们尝试使用一个名为restler的REST客户端,这可以,因为我们不需要任何高级的浏览器模拟。 这是因为请求似乎是asynchronous的,即testing是无用的,因为它在调用“成功”callback之前完成了: var rest = require('restler'); describe("description", function() { it("description", function() { rest.get("http://www.google.com").on('complete', function(data, response) { // Should fail expect(data).toMatch(/apa/i); }); }); }); 我们将感谢有关替代testing框架或同步请求客户端的任何提示。

mongoose:如何build模一个外键/逆关系?

我正在使用Mongoose来模拟Person和Transaction集合,其中每个Transaction都将引用两个不同的Person实例: var TransactionSchema = new Schema({ , amount : { type: Number, required: true } , from : { type: ObjectId, required: true } , to : { type: ObjectId, required: true } , date : Date }); var PersonSchema = new Schema({ name : { type: String, required: true } , transactions : [ObjectId] […]

在Mongoose中searchembedded对象

例如,如果我有以下架构(为了简洁,大大简化)。 如何通过标签searchpost? 我知道如果这个标签文档集合被embedded,但是我想把Tag放在他们自己的集合中。 PostSchema = new Schema({ title: String body: String tags: [{type: Schema.ObjectId, ref: 'Tag' }] }); TagSchema = new Schema({ name: String }); // Here is what I've tried Post.find({'tags.name':'javascript'}) .populate('tags') // Is it necessary to join the collections? .run(function(err, posts) { console.log('posts: ', posts); });

如何在Node.js中构buildTDD?

我有我的文件夹结构如下: backend |-Process1 |-Process2 |-app |-config |-controllers |-models public |-css |-js 我应该在哪里放置我的unit testing文件夹?

用nodejs crypto与php的mcrypt解密blowfish-ecb

我试图在Node.js中使用内置的encryption库来解码以下base64编码的密文 2tGiKhSjSQEjoDNukf5BpfvwmdjBtA9kS1EaNPupESqheZ1TCr5ckEdWUvd+e51XWLUzdhBFNOBRrUB5jR64Pjf1VKvQ4dhcDk3Fdu4hyUoBSWfY053Rfd3fqpgZVggoKk4wvmNiCuEMEHxV3rGNKeFzOvP/P3O5gOF7HZYa2dgezizXSgnnD6mCp37OJXqHuAngr0pps/i9819O6FyKgu6t2AzwbWZkP2sXvH3OGRU6oj5DFTgiKGv1GbrM8mIrC7rlRdNgiJ9dyHrOAwqO+SVwzhhTWj1K//PoyyzDKUuqqUQ6AvJl7d1o5sHNzeNgJxhywMT9F10+gnliBxIg8gGSmzBqrgwUNZxltT4uEKz67u9eJi59a0HBBi/2+umzwOCHNA4jl1x0mv0MhYiX/A== 它似乎与PHP的mcrypt函数使用stringtypeconfig.sys^_-作为关键,如通过input值http://www.tools4noobs.com/online_tools/decrypt/和selectBlowfish,ECB,Base64解码。 但是,当我在Node.js中运行以下代码: var crypto = require('crypto'); var data = "2tGiKhSjSQEjoDNukf5BpfvwmdjBtA9kS1EaNPupESqheZ1TCr5ckEdWUvd+e51XWLUzdhBFNOBRrUB5jR64Pjf1VKvQ4dhcDk3Fdu4hyUoBSWfY053Rfd3fqpgZVggoKk4wvmNiCuEMEHxV3rGNKeFzOvP/P3O5gOF7HZYa2dgezizXSgnnD6mCp37OJXqHuAngr0pps/i9819O6FyKgu6t2AzwbWZkP2sXvH3OGRU6oj5DFTgiKGv1GbrM8mIrC7rlRdNgiJ9dyHrOAwqO+SVwzhhTWj1K//PoyyzDKUuqqUQ6AvJl7d1o5sHNzeNgJxhywMT9F10+gnliBxIg8gGSmzBqrgwUNZxltT4uEKz67u9eJi59a0HBBi/2+umzwOCHNA4jl1x0mv0MhYiX/A=="; var decipher = crypto.createDecipher('bf-ecb', 'typeconfig.sys^_-'); data = decipher.update(data, "base64", "utf8"); data += decipher.final("utf8"); console.log(data); 我得到垃圾输出: y : d ( Q i z1 4 k ( a5 u 73c/ (ֻ ) fȠ ec -<z 8 ( -L ԛ I 1L* u 4 j- Чh쭊@\P)?޼ […]

在Mongo中检查现有文档

我是Mongo的新手,并使用Mongoose作为ORM。 对于用户注册,我使用电子邮件作为唯一。 我想检查电子邮件是否已经被使用,如果没有,那么做一些事情(也许保存,也许下一个注册步骤等)。 对不起,似乎是一个简单的问题,但我还没有find答案。 除非它是“upsert”。 这意味着插入文件,即使我还没有准备好…

有关电话号码的信息

node.js是否有lib的接收电话号码(任何格式),将其转换为默认格式,并告诉我关于数字(例如:国家,城市等)的信息?

没有cookie的Node.JS会话

我一直在尝试,但我发现iOS 5默认不接受cookie。 即使使用Redis,我一直在尝试很多不同的事情,但仍然无法获得一个会话持续多个请求。 如果不使用cookies,我还有其他会话选项吗? 我正在使用Redis滚动一个粗略的会话模块,在那里我只是发送自己的“会话ID”,但似乎可以很容易地刹车。

util.pump(streamA,streamB)和streamA.pipe(streamB)有什么区别?

源代码看起来非常相似: pump , pipe 。 为什么我会使用一个而不是另一个? 一个只是另一个更好的版本?

如何填充嵌套的Mongooseembedded式文档

我已经阅读并重新阅读了关于Mongoose中embedded和链接文档的几篇文章。 根据我所阅读的内容,我得出结论,最好是具有类似于以下的模式结构: var CategoriesSchema = new Schema({ year : {type: Number, index: true}, make : {type: String, index: true}, model : {type: String, index: true}, body : {type: String, index: true} }); var ColorsSchema = new Schema({ name : String, id : String, surcharge : Number }); var MaterialsSchema = new Schema({ name : {type: […]