将平均堆栈服务器连接到离子

时间:2016-04-11 19:23:13

标签: node.js mongodb ionic-framework mean-stack

嘿,我对创建应用程序非常陌生,并且已经与离子工作了大约一个月了,我想知道如何获取我的应用程序,以便我可以通过平均堆栈检索和发送信息到离子。我遇到了很多关于如何创建平均堆栈但没有如何从离子中获取信息的教程。

EX1。我想登录(标准离子登录)来查询用户名和密码。

EX2。我想从我的mongodb发布数据到离子(已经知道如何做平均堆栈真的需要帮助链接它)

我希望我很清楚,谢谢你的答复。

1 个答案:

答案 0 :(得分:0)

允许最终客户端(例如Web应用程序)直接访问(读/写)服务器资源是一种不好的做法。

例如:如果您更改数据库软件(从mongodb到另一个),该怎么办?此外,通过直接访问这些资源,您可以将数据的“密钥”发送给任何可以检查您的客户端代码的人(即几乎所有人!),并且没有任何东西可以阻止他们对您的宝贵数据进行不必要的和未经验证的更改。您需要在服务器内部开发一个“层”,可以访问您的数据并响应客户端请求:该层是后端服务器应用程序

有一些软件(库)可以帮助进行数据库访问:这些软件不是使用“低级数据库语言”,而是为这些调用提取和封装(包装)并简化服务器应用程序的开发。在MEAN堆栈(nodejs,express,mongodb)中,您可以使用monk作为数据访问库。

您的“应用程序堆栈”(双关语!)的粗略图表可能如下:

 ---------------------------------------------------------------------------------------
| SOFTWARE IN YOUR SERVER                  | CLIENT APP (WEB BROWSER, MOBILE APP, ETC.) |
| mongodb <-> monk <-> backend server app <-> Javascript, native code, etc.             |
 ---------------------------------------------------------------------------------------

您的客户端应用程序只能使用您的后端服务器应用程序公开的api(接口)。例如:一个离子框架应用程序(即Javascript代码)可以验证和清理(satinize,转换为JSON等)用户数据并将其发送到服务器应用程序(通过向服务器api进行Ajax调用)。然后,服务器应用程序会响应一些结果数据或状态代码/消息,客户端可以依次处理并显示给最终用户。

评论中的tutorial是一个很好的起点。这些是代码的主要部分:

  • 在服务器应用程序(Node + Express)中:

    // Initialize database access
    var mongo = require('mongodb');
    var monk = require('monk');
    var db = monk('localhost:27017/nodetest2');
    
    . . .
    
    // define route (api endpoint) to get data (userlist collection in this case)
    router.get('/userlist', function(req, res) {
        var db = req.db;
        var collection = db.get('userlist');
        collection.find({},{},function(e,docs){
            res.json(docs);
        });
    });
    
  • 在客户端应用程序(javascript)中:调用后端api方法的函数

    // Fill table with data
    function populateTable() {
    
        // Empty content string
        var tableContent = '';
    
        // jQuery AJAX call for JSON
        $.getJSON( '/users/userlist', function( data ) {
    
            // process each item in returned JSON data
            $.each(data, function(){
                // process each data item...
            });
    
            // Inject the whole content string into our existing HTML table
            $('#userList table tbody').html(tableContent);
        });
    };
    

如您所见,客户端代码通过公开的api端点/users/userlist调用(使用Ajax)Web服务器:此调用将数据返回给客户端。以同样的方式,您可以编写代码以在服务器数据上生成其他CRUD operations;显然,一个更好的例子需要一个参数列表:要过滤的数据,要发布的数据等等。但这是服务器应用程序设计和体系结构的一部分。

在这个例子中,该技术碰巧是全javascript:服务器应用程序使用nodejs + express(javascript),客户端代码(web或移动应用程序)也使用javascript;但是堆栈可以是合适技术的任意组合:在后端你可以使用任何服务器框架(php,python,asp.net,ruby on rails等);这同样适用于客户端:任何可用于集成远程数据使用者的技术都可以用作客户端。