在Azure的Algolia

我正在使用我的android应用程序的firebase,并使用所有博客build议的Algolia进行全文search。 我已经成功地开发了这个脚本,并且正常运行。 现在我想承载脚本来运行24 * 7。因为我有一个azure色的帐户,我怎么去上传脚本? 我已经尝试上传下面的function,networking应用程序,但一直不成功。

PS: – 我试过Heroku但不满意。

剧本。

var http = require('http'); var port = process.env.port || 1337; http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }).listen(port); var dotenv = require('dotenv'); var firebaseAdmin = require("firebase-admin"); var algoliasearch = require('algoliasearch'); var algoliasearchHelper = require('algoliasearch-helper'); // load values from the .env file in this directory into process.env dotenv.load(); // configure firebase var serviceAccount = require("./serviceAccountKey.json"); firebaseAdmin.initializeApp({ credential: firebaseAdmin.credential.cert(serviceAccount), databaseURL: process.env.FIREBASE_DATABASE_URL }); var database = firebaseAdmin.database(); // configure algolia var algolia = algoliasearch(process.env.ALGOLIA_APP_ID, process.env.ALGOLIA_API_KEY); var index = algolia.initIndex('books'); var contactsRef = database.ref("/BookFair"); contactsRef.on('child_added', addOrUpdateIndexRecord); contactsRef.on('child_changed', addOrUpdateIndexRecord); contactsRef.on('child_removed', deleteIndexRecord); function addOrUpdateIndexRecord(dataSnapshot) { // Get Firebase object var firebaseObject = dataSnapshot.val(); // Specify Algolia's objectID using the Firebase object key firebaseObject.objectID = dataSnapshot.key; // Add or update object index.saveObject(firebaseObject, function(err, content) { if (err) { throw err; } console.log('Firebase object indexed in Algolia', firebaseObject.objectID); }); } function deleteIndexRecord(dataSnapshot) { // Get Algolia's objectID from the Firebase object key var objectID = dataSnapshot.key; // Remove the object from Algolia index.deleteObject(objectID, function(err, content) { if (err) { throw err; } console.log('Firebase object deleted from Algolia', objectID); }); } var queries = database.ref("/queries"); queries.on('child_added', addOrUpdateIndexRecordN); function addOrUpdateIndexRecordN(dataSnapshot) { // Get Firebase object var firebaseObject = dataSnapshot.val(); // Specify Algolia's objectID using the Firebase object key firebaseObject.objectID = dataSnapshot.key; // Add or update object var collegeName = ""; var query_ID_LOLWA= ""; var year=""; var query = ""; var counter = 0; for(var i in firebaseObject){ var c = firebaseObject.charAt(i); if(c=='/'){ counter = counter + 1; continue; } else{ if(counter==2) collegeName = collegeName + c; else if(counter == 3) year = year+c; else if(counter == 1) query_ID_LOLWA = query_ID_LOLWA + c; else query = query +c; } } console.log(collegeName); console.log(year); console.log(query_ID_LOLWA); console.log(query); const query_final = query_ID_LOLWA; var helper = algoliasearchHelper(algoliasearch("****", "****"), 'books', { facets: ['collegeName', 'year','priority']}); helper.on('result', function(data,query_ID_LOLWA){ data.getFacetValues('priority',{sortBy: ['count:desc']}); console.log(data.hits); var path_query = "/queries_answers/"+query_final; path_query = path_query.toString(); console.log(path_query); if(data.hits.length==0){ console.log("No results"); database.ref(path_query).push(-1); } else if(data.hits.length>1){ var ID = 1; var counter = -1; var length = data.hits.length-1; for(var h in data.hits){ counter = counter + 1; if( (counter%5 == 0) && (counter != 0)){ ID = ID + 1; } database.ref(path_query+"/"+ID).push(data.hits[h].uuid); } database.ref(path_query+"/totalResults").push(data.hits.length); } else{ database.ref(path_query+"/totalResults").push(data.hits.length); for(var h in data.hits) database.ref(path_query+"/1").push(data.hits[h].uuid); } }); helper.addFacetRefinement('collegeName', collegeName); helper.addFacetRefinement('year',year); helper.setQuery(query); helper.search(); /*index.search(firebaseObject, function(err, content) { if (err) { console.error(err); return; } console.log(content.hits); for (var h in content.hits) { console.log('Hit(' + content.hits[h].objectID + '): ' + content.hits[h].uuid); } database.ref("/query_result").push(content.hits); });*/ } 

没有更多的细节, but have been unsuccessful ,唯一可以给你的build议是按照通常的步骤来部署基于时间的Azurefunction。

最简单的方法是使用Azure Portal :

  • login到您的Microsoft Azure帐户
  • 创build一个函数应用程序来托pipe你的function
  • 添加一个定时器触发的function
  • selectTimerTrigger-Javascript模板开始

在这一点上,你将有一个运行每分钟的function。 您可以检查日志以确认它正在工作。 您现在要configuration其频率:

  • 更新函数的定时器计划 (在“ Integrate选项卡中)以设置函数运行的频率
  • 最后,用自己的代码replace模板的代码。

您可以在这里find详细的教程,并解释如何实现上述每个步骤。