node.js - 无法使用 NodeJS (ExpressJS) 解析 XML 以进入 MongoDB

标签 node.js mongodb express

我有一个数据源,只能使用 XML 格式,而不是 JSON(MongoDB 的首选数据类型)。我有一个方法允许将 JSON 发布到 MongoDB 集合,并且我正在尝试修改它以处理 XML 数据。

这是我修改后的方法:

exports.addXMLTicket = function(req, res) {
var xml2js = require('xml2js');
var xml = req.body;

var parser = new xml2js.Parser();
    parser.parseString(xml, function (err, ticket) {
        console.log('Done parsing XML');
        console.log('Adding ticket: ' + JSON.stringify(ticket));
        db.collection('tickets', function(err, collection) {
            collection.insert(ticket, {safe:true}, function(err, result) {
                if (err) {
                    res.send({'error':'An error has occurred'});
                } else {
                    console.log('Success: ' + JSON.stringify(result[0]));
                    res.send(result[0]);
                }
            });
        });
    });
}

这是 XML 数据:

<?xml version='1.0'?>
<instance dm:form_version='1.0' dm:submit_time='2012-04-02 12:33:26 UTC' dm:submitting_user='Dusan Babich' writeTime='2011-04-26T15:23:11.506' dm:form='A First Form' dm:submitting_device='iPhone_d6e2542effafbcc8d0e6bf0ef2917b76dea4faf8' xmlns:dm='http://mobileforms.devicemagic.com/xforms' xmlns='http://www.devicemagic.com/xforms/demo/2d3698c0-650c-012e-7e8e-12313b079c72'>
  <untitled_form_1>
    <quality_of_day>{{VALUE}}</quality_of_day>
    <inbox_overflow>{{VALUE}}</inbox_overflow>
    <next_holiday>{{VALUE}}</next_holiday>
    <comments>{{VALUE}}</comments>
  </untitled_form_1>
</instance>

最后是我的 CURL 请求:

curl -i -X POST -H "Content-Type: text/xml" -d "<?xml version='1.0'?><instance dm:form_version='1.0' dm:submit_time='2012-04-02 12:33:26 UTC' dm:submitting_user='Dusan Babich' writeTime='2011-04-26T15:23:11.506' dm:form='A First Form' dm:submitting_device='iPhone_d6e2542effafbcc8d0e6bf0ef2917b76dea4faf8' xmlns:dm='http://mobileforms.testdomain.com/xforms' xmlns='http://www.testdomain.com/xforms/demo/2d3698c0-650c-012e-7e8e-12313b079c72'><untitled_form_1><quality_of_day>test</quality_of_day><inbox_overflow>test</inbox_overflow><next_holiday>test</next_holiday><comments>test</comments></untitled_form_1>" http://127.0.0.1:3000/ticketsxml

我收到的错误是“TypeError:无法读取未定义的属性'_id'”,这似乎是因为它没有从 POST 获取正文而发生的。但是,当我以 JSON 格式发布时,它工作得很好。

如有任何建议,我们将不胜感激,谢谢!

最佳答案

关于node.js - 无法使用 NodeJS (ExpressJS) 解析 XML 以进入 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006010/

相关文章:

node.js - 使用 laravel 运行 npm 时出现 Node 错误

javascript - Db.Collection 不是一个函数 MongoDB

node.js - 如何为用户需要登录的网页编写单元测试

node.js - Heroku/Node.js - 导致内部服务器错误的某种路由错误

javascript - 动态命名方法

Node.js - 核心集群模块

mongodb - 生产非 Azure IIS 服务器上的 Windows Azure TDS 模拟

node.js - 使用 node.js/express 自动 HTTPS 连接/重定向

node.js - 在安装 npm 模块之前是否需要有 package.json 文件?

mongodb - 如果有多个索引包含相同的字段,会使用哪个索引?