如何在 node.js 中设计持久化服务

Posted

技术标签:

【中文标题】如何在 node.js 中设计持久化服务【英文标题】:How to design persistence service in node.js 【发布时间】:2013-07-20 15:52:18 【问题描述】:

我正在用 express 和 mongo 制作一个 rest api。我没有为每个模型写出 crud 操作,而是考虑编写一个通用的数据库服务,例如(在 db.coffee 中):

exports.findById = (model, req, res) ->
  model.findById req.params.id, (err, document)->
    if err
      throw err
    return document

因此,如果我想从用户 ID 中获取用户,我会调用(在 user.coffee 中):

exports.findById = res.send db.findById(model, req, res)

从 app.coffee 调用:

app.get '/user/:id', user.findById(req, res)

你觉得这个设计怎么样?这有标准设计吗?

【问题讨论】:

【参考方案1】:

是的,有。

看看 mongoDb 的其余接口。 http://docs.mongodb.org/ecosystem/tools/http-interfaces/

另外,如果你从头开始做,你会很快意识到有很多边缘情况是你不想处理的。

以这种方式使用 mongoDB 的主要问题是,您的大量数据库数据将通过 Internet 以小部分形式传输到客户端中以进行大量简单请求。如果您在服务器端执行大部分逻辑,您将不会遇到相同的网络延迟,并且您的应用可能会响应更快。

【讨论】:

以上是关于如何在 node.js 中设计持久化服务的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Node.js 中与 Net 建立持久连接?

node.js 的进程内持久键值存储

nodejs - 为啥 Node.js 可以处理大量的同时持久连接?

forever让node.js持久运行

如何通过express-session在node.js上设置持久性cookie?

Node.js - Express会话数据不会持久化