V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
timqian
V2EX  ›  程序员

关于网站服务端,写一个提供 REST api 的服务器,还是直接操作 mongodb?

  •  
  •   timqian ·
    timqian · 2015-11-29 18:22:50 +08:00 · 2698 次点击
    这是一个创建于 3287 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前些日子尝试了 meteor 虽然最后因为种种原因没有在项目中使用它,但感觉在前端直接操纵 mongodb 的感觉挺爽的。最近做项目的时候,考虑要不要使用这种方式。 google 了一番在 github 发现了这个项目: express-restify-mongoose。它把对 mongodb 的操作暴露成了 rest 接口。这样就可以用 http 请求对 mongodb 做所有操作。省去了开发 REST api server 的工作。
    (关于 API 的安全性,还没有细看,但应该可以在用户请求路由时对用户进行认证和限制)
    大家觉得这种方式怎么样?

    10 条回复    2015-11-29 20:45:34 +08:00
    xufang
        1
    xufang  
       2015-11-29 18:26:22 +08:00
    MEAN JS 可能是你想要的。
    odirus
        2
    odirus  
       2015-11-29 18:27:36 +08:00
    用来学习还是可以的,但是如果是商业项目,尽量不要。
    timqian
        3
    timqian  
    OP
       2015-11-29 18:34:56 +08:00
    @odirus 谢谢回复,有什么缺点呢?能简单说说吗
    odirus
        4
    odirus  
       2015-11-29 18:37:32 +08:00
    @timqian 既然你直接在浏览器里面操作后面的数据,那其他人也能,现在的 js 反压缩工具太多了。所以如果是商业项目,很可能会被竞争对手注入某些东西直接擦除数据。
    odirus
        5
    odirus  
       2015-11-29 18:40:57 +08:00   ❤️ 1
    @timqian 无论是采用 Rest Api 还是其他方式,更主要的目的是对操作进行权限认证。
    ghostheaven
        6
    ghostheaven  
       2015-11-29 19:00:07 +08:00
    从灵活性可扩展角度,应该用 restful 包一层
    Kilerd
        7
    Kilerd  
       2015-11-29 19:00:28 +08:00
    在前端直接操作 mongo ? 怎么做权限认证? 别闹好吗?
    timqian
        8
    timqian  
    OP
       2015-11-29 19:01:39 +08:00
    @odirus 这个问题应该可以解决的。可以根据用户的权限来限制路由的访问(后端,操作数据库之前),并且把所有没用到的路由都封起来。
    timqian
        9
    timqian  
    OP
       2015-11-29 19:08:58 +08:00
    @Kilerd 并不是直接操作,是自动暴露出 rest 接口,权限认证可以在操作之前做的
    cnhongwei
        10
    cnhongwei  
       2015-11-29 20:45:34 +08:00   ❤️ 1
    @timqian 用户及权限我想也是保存在 mongo 中的,前端都可以直接访问了,权限很有可能被改写掉。当然你可以说,我可以考虑的很周全。不过,多大的公司都出过安全漏洞。所以,前端直接访问数据库和直接把数据库开放给所有人基本没有区别,况且还是一般只考虑性能,不考虑安全的 nosql 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.