小编Jed*_*son的帖子

如何在node.js上实现jQuery直接上传到Cloudinary

我正在尝试通过他们的jQuery插件直接上传到Cloudinary到Node.js应用程序,我想知道是否有人可以帮助我填补他们的示例中的一些空白.

这是博客文章,解释了如何做到这一点:

http://cloudinary.com/blog/direct_image_uploads_from_the_browser_to_the_cloud_with_jquery

在"其他开发框架和高级用法"部分中,我坚持的部分是:

  • "将data-form-data设置为上传API参数的JSON表示.必填字段为api_key,timestamp,signature和callback.",

更具体地说:

  • "需要在服务器端生成签名以进行正确的身份验证."

似乎没有任何确切如何实现这一目标的例子.

例子是:

<input name="file" type="file" 
       class="cloudinary-fileupload" data-cloudinary-field="image_upload" 
       data-form-data=" ... html-escaped JSON data ... " ></input>
Run Code Online (Sandbox Code Playgroud)

数据表单数据的未转义JSON内容是:

{ "timestamp":  1345719094, 
  "callback": "https://www.example.com/cloudinary_cors.html",
  "signature": "7ac8c757e940d95f95495aa0f1cba89ef1a8aa7a", 
  "api_key": "1234567890" }
Run Code Online (Sandbox Code Playgroud)

你如何产生签名?我知道我需要在node.js中执行此操作,看起来它需要在生成表单时发生,尽管我可以告诉签名需要包含时间戳 - 这肯定会在用户发布时过时填写了表格?

请求身份验证的文档位于:http://cloudinary.com/documentation/upload_images#request_authentication

在我正在使用的cloudinary_npm模块中,有一个uploader.coffee被调用的方法direct_upload似乎是帮助它实现这一点,但我不清楚如何将它们实际绑定在一起.

这两个框架在博客文章Rails和Django中有真实的例子,通过他们自己的帮助器抽象出这种复杂性,例如你添加{{ form.image }}到表单中的Django ,它输出结果image = cloudinary.forms.CloudinaryJsFileField()- 不幸的是如何在任何其他服务器端环境中复制它不包括在内.

如果有人能够对此有所了解,或者分享关于如何使其端到端工作的要点或示例,我将非常感激.

javascript jquery node.js cloudinary

8
推荐指数
1
解决办法
2957
查看次数

在 Mongoose 和 Node.js 中使用虚拟 getter 对性能有影响吗?

我开始在现实世界的应用程序中使用 Mongoose 中的虚拟 getter 方法,我想知道使用它们是否会对性能产生影响,最好预先了解一下。

例如:

var User = new Schema({
  name: {
    first: String,
    last: String
  }
});

User.virtual('name.full').get(function () {
  return this.name.first + ' ' + this.name.last;
});
Run Code Online (Sandbox Code Playgroud)

基本上,我还不明白 getter 是如何生成到 Mongoose 使用的对象中的,以及这些值是在对象初始化时还是按需填充。

__defineGetter__ 可用于将属性映射到 Javascript 中的方法,但 Mongoose 似乎并未将其用于虚拟 getter(基于对代码的快速搜索)。

另一种方法是在初始化时填充每个虚拟路径,这意味着对于上面示例中的 100 个用户,连接名字和姓氏的方法被调用 100 次。

(我使用的是一个简化的例子,getter 可能要复杂得多)

检查原始对象本身(例如 using console.dir)有点误导,因为 Mongoose 使用内部方法来处理将对象转换为“普通”对象或 JSON,默认情况下不包括 getter。

如果有人能阐明这是如何工作的,以及是否有大量 getter 可能会成为大规模问题,我将不胜感激。

javascript performance mongoose node.js

5
推荐指数
1
解决办法
1099
查看次数

在Node.JS中输出用户时区的时间戳的最佳方法

我的应用程序正在记录某些用户事件以在UI中显示.时间戳作为日期存储在Mongo中,它成为JS Date对象,具有相对于服务器时区的时区信息.

我正在使用moment.js格式化日期,但由于我的用户在澳大利亚并且我的应用程序托管在Heroku上(服务器时区是UTC),那么moment.js有助于输出的"本地"时间不是我的用户想看.

Moment.js允许您在UTC和"本地"时间之间切换(在服务器上),但似乎不允许您在不同时区的上下文中输出.

(更改服务器的时区不能解决根本问题,对我的一些用户来说也是错误的.)

我曾尝试使用节点时间库来更改日期的时区,如果我只是使用Date.toString()输出时间戳,这确实有效,但如果日期由Moment.js包装,它将恢复为服务器的时区.

我可以通过计算用户本地时区和服务器本地时区之间的差异并在Moment.js格式化之前修改日期来解决问题,但我希望有(a)更优雅的解决方案,或者(b) )一个很好的图书馆,可以做到这一点.

我还可以输出UTC中的日期并让客户端库重新格式化它们,但我更希望有一个服务器端解决方案.

有没有人知道一个很好的解决方案,或者一个填补Node.JS应用程序空白的库?这是否有既定的最佳实践?

javascript timezone datetime node.js momentjs

2
推荐指数
1
解决办法
3896
查看次数

对生产mongo数据库运行db.copyDatabase()有什么性能影响?

我最近推出了一个尚未看到很多生产规模的网络应用程序,但我希望(希望;)它将在不久的将来.

我发现能够使用db.copyDatabase()非常有用的功能将当前生产系统的快照复制到开发中,并且我想知道随着生产数据库的增长/处于更重的负载下,我可能会遇到什么样的问题.

文档似乎并不表示该命令正在阻塞(特别是如果在命令运行时将数据添加到任一数据库,则会引发数据集变得不同步).

由于数据库被复制到开发(或登台)服务器,因此重建索引/等所花费的时间不会是一个大问题(至少有一段时间).

在这种情况下,文档对指南有点了解,所以我希望得到以下建议:

  • 是否适合运行db.copyDatabase 生产中的实时数据库进行复制?
  • 源数据库是否有性能损失?
  • 它停止可行的规模是否存在实际限制?(根据这个问题,这个限制看起来会非常大)

作为参考,应用程序和数据库是单独托管的(heroku/mongolab).我也在命令db.dropDatabase()之前在本地运行copyDatabase()以获得一个完全新的数据库.

mongodb mlab

1
推荐指数
1
解决办法
1170
查看次数