我目前正在构建一个新的网络应用程序,包括用户注册,个人资料,图片上传等。我在以前的项目中使用MEAN堆栈(MongoDB,ExpressJS,Angular,NodeJS),现在想尝试使用couchDB。
couchDB免费提供REST-API。我可以将所有逻辑转移到客户端并确保输入由couchDBs验证函数有效。因此,我可以将客户端的请求直接发送到数据库,我不需要在我的expressJS控制器中编写像CRUD操作这样烦人的东西。身份验证,验证和简单的CRUD操作 - 它都是免费的。
有没有理由不这样做?然后我将请求传递给我的服务器,然后从那里将它传递到couchDB,这几乎消除了mongoDB的所有好处。
问候, 米歇尔
答案 0 :(得分:2)
我认为您的建议至少在理论上是正确的,您可能希望继续这样做,也许可以使用反向代理(如nginx或node-http-proxy)将请求从浏览器转发到couchdb。我相信市场上的产品支持这种“无应用服务器”架构,例如parse.com,它提供了一些社会证据,证明这个想法至少是有趣且值得探索的。
但是我认为你会在某些时候发现有一个应用服务器这样的东西,人们使用它们并在几乎每个应用程序中为它们编写代码是有充分理由的。使用couchdb数据验证代码调试问题可能最多也很麻烦。与使用node-inspector和chrome开发人员工具调试器调试node.js代码的惊人功能相比。
couchdb也可能不会提供足够精细的授权功能。这意味着最终您的应用程序将暴露给恶意用户,只需使用正确的文档ID执行PUT,并获取他们未经授权可以查看或更改的数据。
很少有应用程序很简单,UI + DB可以处理所需的所有数据转换和操作。理论上你可以在浏览器中编写一些这样的逻辑,但是在你的复合查询逻辑和你的数据库之间使用互联网会给你的应用增加太多的延迟,使一些功能变得不可能,特别是如果你不得不进行查询,得到一些结果,然后根据每个结果进行二次查询。这在服务器端应用程序和它的couchdb之间有时是可行的,但是在互联网上这样做会受到延迟的影响。