如何使用 JQuery 将对象数据传递到节点服务器并保存到 mongodb?

Posted

技术标签:

【中文标题】如何使用 JQuery 将对象数据传递到节点服务器并保存到 mongodb?【英文标题】:How to use JQuery to pass object data to node server and save to mongodb? 【发布时间】:2013-07-13 19:47:16 【问题描述】:

我正在使用 jQuery UI 来允许用户移动 div。这将是事物的观点。 现在用户将 div 移动到新的位置 (x,y)。我使用 jQuery 来获取 (x,y) 值。

如何将新的 (id,x,y) 值“传递”到我的节点服务器(控制器),以便服务器可以将其保存到 mongodb(模型)?

【问题讨论】:

【参考方案1】:

似乎最直接的方法是在您的服务器上公开一个 API 来处理新值。

对于路由部分: 查看此article,了解如何创建自己的路由系统。您也可以只使用Express 或Connect 来设置路线(这是免费的优势)。在此处选择路由器的更多信息:Which Node.js Router Should I Use?

用于保存在数据库中 假设您决定使用 Express,并且您的 API 是:/user/:userId/view/:viewId/position,那么您可以这样做:

var mongoose = require('mongoose');
var View = new Schema(
  id: String,
  x:  Number,
  y: Number
);
mongoose.model("View", View);

并且,在您的路由器处理程序中:

exports.post("/user/:userId/view/:viewId/position", function (req, res) 
    //Find user with userId in db
    //...
    //Find view with viewId in db
    var view = req.params.viewId;
    View.findOne(id:view, function(err, result)
          if(err || !result)
            console.log("cannot find view "+view);
            res.end();
          
          else 
            //update value of x and y
            var x = req.body.x;
            var y = req.body.y;
            //...
         
);

用于发送数据 最后,在客户端,使用 jQuery 发出 POST 请求:

 $.ajax(
        type: "POST",
        url: window.location.href+"/view/"+viewId+"position",
        data: 
            x: 200,
            y: 150
        ,
        success: function(d) 
            //Position saved
        ,
        error: function(jqXHR, textStatus, errorThrown) 
            //Something bad happened
        
    );

【讨论】:

以上是关于如何使用 JQuery 将对象数据传递到节点服务器并保存到 mongodb?的主要内容,如果未能解决你的问题,请参考以下文章

将复杂对象传递到 WCF Rest 服务

如何将 JSON 对象内的 JSON 数组传递给 jQuery 自动完成

如何使用 ajaxFileUpload jQuery 插件传递数据

如何通过 AJAX 将 jquery 对象数据发送到 php?

如何将值从反应本机应用程序传递到节点 js 后端

对象数组的 jQuery POST 到节点