Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Algolia Nodejs Firebase同步-.on(';添加了child';)赢得';我没接到电话_Node.js_Firebase_Firebase Realtime Database_Algolia - Fatal编程技术网

Node.js Algolia Nodejs Firebase同步-.on(';添加了child';)赢得';我没接到电话

Node.js Algolia Nodejs Firebase同步-.on(';添加了child';)赢得';我没接到电话,node.js,firebase,firebase-realtime-database,algolia,Node.js,Firebase,Firebase Realtime Database,Algolia,我有一个NodeJS脚本,其中我正在查看Firebase数据库中的树,查看是否通过添加的child\u、child\u change、删除的child\u函数添加/更改/删除了一个条目,以便将条目与我的Algolia数据库同步 问题是,当我在这些树上添加/更改/删除一项时,函数本身永远不会被触发 但是,当我启动脚本时,我还调用了一个.once('value',initialImport)函数,该函数运行良好 例如,下面是我在NodeJS脚本中添加的相关child\u代码: var dotenv

我有一个NodeJS脚本,其中我正在查看Firebase数据库中的树,查看是否通过添加的
child\u
child\u change
、删除的
child\u
函数添加/更改/删除了一个条目,以便将条目与我的Algolia数据库同步

问题是,当我在这些树上添加/更改/删除一项时,函数本身永远不会被触发

但是,当我启动脚本时,我还调用了一个
.once('value',initialImport)
函数,该函数运行良好

例如,下面是我在NodeJS脚本中添加的相关
child\u
代码:

var dotenv = require('dotenv');
var firebaseAdmin = require("firebase-admin");
var algoliasearch = require('algoliasearch');

// load values from the .env file in this directory into process.env
dotenv.load();

var serviceAccount = require("./serviceAccountKey.json");
firebaseAdmin.initializeApp({
  credential: firebaseAdmin.credential.cert(serviceAccount),
  databaseURL: process.env.FIREBASE_DATABASE_URL
});
var database = firebaseAdmin.database();

var algolia = algoliasearch(process.env.ALGOLIA_APP_ID, process.env.ALGOLIA_API_KEY);
var users = algolia.initIndex('users');

var bandsRef = database.ref("/social/bands");

bandsRef.on('child_added', addOrUpdateBandIndexRecord);

/**
 *  Add or update a band index record
 */
function addOrUpdateBandIndexRecord(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
  bands.saveObject(firebaseObject, function(err, content) {
    if (err) {
      throw err;
    }
    console.log('Firebase<>Algolia band object saved', firebaseObject.objectID);
  });
}
var dotenv=require('dotenv');
var firebaseAdmin=require(“firebase admin”);
var algoliasearch=require('algoliasearch');
//将值从此目录中的.env文件加载到process.env中
dotenv.load();
var servicecomport=require(“./servicecomportkey.json”);
firebaseAdmin.initializeApp({
凭证:firebaseAdmin.credential.cert(serviceAccount),
databaseURL:process.env.FIREBASE\u数据库\u URL
});
var database=firebaseAdmin.database();
var algolia=algoliasearch(process.env.algolia_APP_ID,process.env.algolia_API_KEY);
var users=algolia.initIndex('users');
var bandsRef=database.ref(“/social/bands”);
bandsRef.on('child_added',addOrUpdateBandIndexRecord');
/**
*添加或更新波段索引记录
*/
函数addorUpdateBandExRecord(dataSnapshot){
//获取Firebase对象
var firebaseObject=dataSnapshot.val();
//使用Firebase对象键指定Algolia的objectID
firebaseObject.objectID=dataSnapshot.key;
//添加或更新对象
bands.saveObject(firebaseObject,函数(err,content){
如果(错误){
犯错误;
}
console.log('FirebaseAlgolia band object saved',firebaseObject.objectID);
});
}
这永远不会运行:/有什么我做错了吗?这在很久以前是有用的


更新:我遇到的问题是,我在添加
.on('child_added')
的ref上调用了
.once()
,这导致了冲突。一旦我删除了
.Once()
的代码,它就解决了同步问题。为了进行初始导入,您很可能希望该代码位于单独的节点文件中。不管怎样,这就是我的工作。

嗨,史蒂维,这是你失败服务的完整代码吗?因为在函数名为
addorUpdateBandXRecord
时注册了
addOrUpdateUserIndexRecord
,然后创建了名为users的索引,但从未使用过它。让我知道嘿,那里@vvo,我道歉。我已将所有代码更新为正确的代码段。我的文件中有更多的代码,但大致相同。此示例包含所有相关代码。你知道这是怎么回事吗?你能在bands.saveIndex之前先console.log jsut再对firebaseObject进行索引吗?这样我们就可以检查什么是变形了