我正在尝试通过他们的jQuery插件直接上传到Cloudinary到Node.js应用程序,我想知道是否有人可以帮助我填补他们的示例中的一些空白.
这是博客文章,解释了如何做到这一点:
http://cloudinary.com/blog/direct_image_uploads_from_the_browser_to_the_cloud_with_jquery
在"其他开发框架和高级用法"部分中,我坚持的部分是:
更具体地说:
似乎没有任何确切如何实现这一目标的例子.
例子是:
<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()
- 不幸的是如何在任何其他服务器端环境中复制它不包括在内.
如果有人能够对此有所了解,或者分享关于如何使其端到端工作的要点或示例,我将非常感激.
我开始在现实世界的应用程序中使用 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 可能会成为大规模问题,我将不胜感激。
我的应用程序正在记录某些用户事件以在UI中显示.时间戳作为日期存储在Mongo中,它成为JS Date对象,具有相对于服务器时区的时区信息.
我正在使用moment.js格式化日期,但由于我的用户在澳大利亚并且我的应用程序托管在Heroku上(服务器时区是UTC),那么moment.js有助于输出的"本地"时间不是我的用户想看.
Moment.js允许您在UTC和"本地"时间之间切换(在服务器上),但似乎不允许您在不同时区的上下文中输出.
(更改服务器的时区不能解决根本问题,对我的一些用户来说也是错误的.)
我曾尝试使用节点时间库来更改日期的时区,如果我只是使用Date.toString()输出时间戳,这确实有效,但如果日期由Moment.js包装,它将恢复为服务器的时区.
我可以通过计算用户本地时区和服务器本地时区之间的差异并在Moment.js格式化之前修改日期来解决问题,但我希望有(a)更优雅的解决方案,或者(b) )一个很好的图书馆,可以做到这一点.
我还可以输出UTC中的日期并让客户端库重新格式化它们,但我更希望有一个服务器端解决方案.
有没有人知道一个很好的解决方案,或者一个填补Node.JS应用程序空白的库?这是否有既定的最佳实践?
我最近推出了一个尚未看到很多生产规模的网络应用程序,但我希望(希望;)它将在不久的将来.
我发现能够使用db.copyDatabase()
非常有用的功能将当前生产系统的快照复制到开发中,并且我想知道随着生产数据库的增长/处于更重的负载下,我可能会遇到什么样的问题.
文档似乎并不表示该命令正在阻塞(特别是如果在命令运行时将数据添加到任一数据库,则会引发数据集变得不同步).
由于数据库被复制到开发(或登台)服务器,因此重建索引/等所花费的时间不会是一个大问题(至少有一段时间).
在这种情况下,文档对指南有点了解,所以我希望得到以下建议:
作为参考,应用程序和数据库是单独托管的(heroku/mongolab).我也在命令db.dropDatabase()
之前在本地运行copyDatabase()
以获得一个完全新的数据库.
javascript ×3
node.js ×3
cloudinary ×1
datetime ×1
jquery ×1
mlab ×1
momentjs ×1
mongodb ×1
mongoose ×1
performance ×1
timezone ×1