如何在node.js中迭代mongodb数据库发送给Algolia?

时间:2015-10-17 00:47:10

标签: node.js mongodb mongoose algolia

在Algolia的文档中,对于node.js部分,他们指定使用MySQL进行索引而不是使用MongoDB,我还有另外一个关于这个问题的问题,但这是一个更普遍的问题,check here

有些人要求我使用mongo-connector,但是尝试了它,我得到了一些未知的错误,这让我找到了一个

我真正的问题是,如何将mongodb中的集合列表迭代到algolia?

这是Algolia在Node.js中的MySQL版本

var _ = require('lodash');
var async = require('async');
var mysql = require('mysql');

var algoliasearch = require('algoliasearch');
var client = algoliasearch("RQGLD4LOQI", "••••••••••••••••••••••••••••••••");
var index = client.initIndex('YourIndexName');

var connection = mysql.createConnection({
  host: 'localhost',
  user: 'mysql_user',
  password: 'mysql_password',
  database: 'YourDatabaseName'
});

connection.query('SELECT * FROM TABLE_TO_IMPORT', function(err, results, fields) {
  if (err) {
    throw err;
  }

  // let's use table IDS as Algolia objectIDs
  results = results.map(function(result) {
    result.objectID = result.id;
    return result;
  });

  // split our results into chunks of 5,000 objects, to get a good indexing/insert performance
  var chunkedResults = _.chunk(results, 5000);

  // for each chunk of 5,000 objects, save to algolia, in parallel. Call end() when finished
  // or if any save produces an error
  // https://github.com/caolan/async#eacharr-iterator-callback
  async.each(chunkedResults, index.saveObjects.bind(index), end);
});

function end(err) {
  if (err) {
    throw err;
  }

  console.log('MySQL<>Algolia import done')
};

具体来说我使用mongoose作为我的ORM,所以我没有其他库的经验。请帮助我,以便我可以找到一些搜索界面:(。

1 个答案:

答案 0 :(得分:9)

您可以使用以下代码迭代整个MongoDB var JSONAddress = $.getJSON("../JSON/addresses.json",function(){ console.log(JSONAddress[0].id);}) 集合+创建将发送到Algolia索引的批次:

mydb.myCollection