Node Js rest api和数据库推荐

Posted

技术标签:

【中文标题】Node Js rest api和数据库推荐【英文标题】:Nodejs rest api & database recommendations 【发布时间】:2015-01-15 21:20:01 【问题描述】:

我正在开发一款社交应用,假设该应用具有以下功能:

    用户供稿 好友请求,连接。 喜欢 评论

同样,我正在使用 nodejs 构建一个 REST API,我对 nodejs 的经验是有限的。我花了很多时间研究,我发现了一些零碎的信息。我期待听到专家的一些建议:)

    我打算使用 NoSQL 图形数据库(Neo4j,OrientDB)。这是不是一个不错的选择。或者他们是更好的选择,还是我应该使用 mysql 之类的关系数据库? 对于 CRUD 操作,我在想sailjs。 (我计划使用 yeoman,但目前还没有 Sails 的生成器)。想法/建议?

感谢您的帮助。

【问题讨论】:

请问您喜欢使用帆的什么地方? Mongodb 可能值得一看? mongodb.org @dandavis - 连接到任何数据库(我知道他们正式支持本地磁盘、redis、my sql 和其他一些)。支持 websockets,并且有一个基于护照的身份验证生成器可与帆一起使用。 :) @Magrangs - 我对 mongodb 进行了很多研究,人们在适应 mongo 后很快就表达了他们的沮丧。 @AbhilashShamsunder 我自己也不太熟悉,但他们遇到了什么样的挫折? (供将来参考)。 【参考方案1】:

我是 MEAN Stack 的忠实粉丝。 MongoDB 用于数据库,ExpressJS 用于 Node 框架,AngularJS 用于前端,NodeJS 用于服务器。话虽如此,我构建的应用程序可以很好地与 MongoDB 的 NoSQL 结构配合使用。对于社交网络,关系数据库可能更有意义,并且可以为您省去一些麻烦。 Here 是一篇详尽的文章,解释了原因。

【讨论】:

我是 MEAN 堆栈的忠实粉丝。但根据我的研究,正如你提到的,mongodb 有其自身的限制。 每当提到“社交”这个词时,我都会回避 Mongo。朋友、喜欢、cmets 等都可以用 Mongo 建模,但随着所述社交网络的增长,效率低下且繁琐。仍然是服务器上 Node 和 Angular 作为前端框架的大力倡导者。 我同意。 Angular 前端也是我的最爱。我打算使用离子(角度依赖)框架来构建我的应用程序。【参考方案2】:

请参考此代码。

服务器.js

var express = require("express");
var mysql   = require("mysql");
var bodyParser  = require("body-parser");
var rest = require("./REST.js");
var app  = express();

function REST()
    var self = this;
    self.connect_to_mysql();


REST.prototype.connect_to_mysql = function() 
    var self = this;
    var pool      =    mysql.createPool(
        connectionLimit : 100,
        host     : 'localhost',
        user     : 'root',
        password : '',
        database : 'restful_api_demo',
        debug    :  false
    );
    pool.getConnection(function(err,connection)
        if(err) 
          self.stop(err);
         else 
          self.configureExpress(connection);
        
    );


REST.prototype.configureExpress = function(connection) 
      var self = this;
      app.use(bodyParser.urlencoded( extended: true ));
      app.use(bodyParser.json());
      var router = express.Router();
      app.use('/api', router);
      var rest_router = new rest(router,connection);
      self.start_server();


REST.prototype.start_server = function() 
      app.listen(3000,function()
          console.log("All right ! I am alive at Port 3000.");
      );


REST.prototype.stop = function(err) 
    console.log("ISSUE WITH MYSQL \n" + err);
    process.exit(1);


new REST(); // Instantiate clas

这里是 REST.js

function REST_ROUTER(router,connection) 
    var self = this;
    self.handle_routes(router,connection);


REST_ROUTER.prototype.handle_routes = function(router,connection) 
    router.get("/",function(req,res)
        res.json("Message" : "Hello World !");
    )


module.exports = REST_ROUTER;

链接:http://codeforgeek.com/2015/03/restful-api-node-and-express-4/

【讨论】:

【参考方案3】:

sailsjs 与 couchdb 和 angular js 将是我的推荐。你可以参考couchdb vs mongodb 也请参考this 了解风帆的优点和特点。 您可以使用nanocouchdb-lucene 来充分利用沙发数据库。

【讨论】:

以上是关于Node Js rest api和数据库推荐的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 通过 REST API 发送图像

REST API - Android Studio、Node.js、Firebase

Node.JS RESTful API 的最佳身份验证方法

如何在 Node.js REST API 中处理非传统查询

Node.js RESTful API

Node.js REST API 从 MongoDB 获取数据