nodejs加载xml数据并且保存到mongodb中
nodejs加载xml数据并且保存到mongodb中
雷伟波 发表于3年前
nodejs加载xml数据并且保存到mongodb中
  • 发表于 3年前
  • 阅读 18
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

项目中需要初始化中国所有省份的信息到mongo db中,在网上找到 省份数据数据是xml格式的,所以大致思路是

  1. 从xml中读取数据,存入对应的model的数据中
  2. 调用model对应的save方法
var fs = require('fs');
fs.readFile('Provinces.xml', function(err, data) {
    ....
});

以上代码就是先从文件流通过字符串的形式读入,然后通过libxmljs去解析,得到数据之后,存入到province这个对象里面:

var xmlDoc = libxmljs.parseXmlString(data);
    var provinces = xmlDoc.find("//Province");

    var length = provinces.length;
    var provinceList = [];
    for(var i = 0; i < length; i++) {
      var province = new Province();
      province.id = provinces[i].attr('ID').value();
      province.name = provinces[i].attr('ProvinceName').value();
      provinceList.push({id: provinces[i].attr('ID').value(), name: provinces[i].attr('ProvinceName').value()});
    }

这一步犯了一个很大的错误,我以为push的时候,传入一个provicen对象即可,但这样是不对的,需要传入一个json格式的数组,才能正确存入到mongodb里面

然后通过mongoose去打开mongo的数据库连接:

var mongoose = require('mongoose');

    mongoose.set('debug', true);
    mongoose.connect(mongoose_url);
    mongoose.connection.on('error', function () {
      console.log('Mongoose connection error', arguments);
    });
    mongoose.connection.once('open', function callback() {
      Province.collection.insert(provinceList, function(err, docs) {
        if (err) {
          console.log('error:' +err.message);
        } else {
          console.info('%d potatoes were successfully stored.', docs.length);
        }
      })
    });
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 4
码字总数 2113
×
雷伟波
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: