在Algolia的文档中,他们针对node.js部分指定了使用MySQL进行索引而不是MongoDB。我有一个关于这个问题的更一般的问题,请点击查看。
有些人让我使用mongo-connector,但我尝试后出现了一些未知错误,这让我回到了起点。
我的真正问题是,如何在mongodb中迭代集合列表以用于Algolia?
这是Algolia在Node.js中对MySQL的版本。
有些人让我使用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,因此在其他库方面没有经验。请帮助我解决这个问题,以便我可以拥有一个搜索接口 :(。