Я пытаюсь написать программу js для узла, которая читает значения из базы данных Firebase и объединяет все слова в определенном поле для всех записей, но я получаю следующие ошибки ..
[2019-06-24T14:52:14.083Z] @firebase/database: FIREBASE WARNING: Exception was thrown by user callback. TypeError: Cannot convert object to primitive value at C:\Users\xxx\Projects\NodeProjects\QuestionAppNode\index.js:52:38
TypeError: Cannot convert object to primitive value
Ниже приведен мой код node.js ..
retrieveQuestions();
function retrieveQuestions(){
userQuestionsFBRef.once("value", function(snapshot) {
var fetchedQuestions = [];
snapshot.forEach(function(snapshotChild){
var itemVal = snapshotChild.val();
fetchedQuestions.push(itemVal);
})
var arrayOfQuestions = [];
fetchedQuestions.forEach(function(question){
arrayOfQuestions += question.question
})
console.log("Fetched questions are " + JSON.stringify(fetchedQuestions));
console.log("arrayOfQuestions is " +JSON.stringify(arrayOfQuestions));
var wordcnt = arrayOfQuestions.replace(/[^\w\s]/g, "").split(/\s+/).reduce(function(map, word){
map[word] = (map[word]||0)+1;
return map;
}, Object.create(null));
console.log("Word count is " + wordcnt)
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
}
Подобный код работает, если я запускаю его в консоли Chrome, например:
var arrayOfQuestions = [{"dateTime":"2019-06-24T14:06:36.983Z","name":"AMA09","question":"Who let the dogs out?"},{"dateTime":"2019-06-24T14:07:11.501Z","name":"AMA09","question":"What is the capital of Senegal?"},{"dateTime":"2019-06-24T14:20:25.222Z","name":"AMA34","question":"Is Free will an illusion?"}];
var newArray = [];
arrayOfQuestions.forEach(question => newArray += question.question);
var wordcnt = newArray.replace(/[^\w\s]/g, "").split(/\s+/).reduce(function(map, word){
map[word] = (map[word]||0)+1;
return map;
}, Object.create(null));
Кто-нибудь знает, почему это происходит??
Я понимаю, что подход, который я использую для агрегирования слов в этих записях, вероятно, не правильный путь, то есть добавление всего текста в поле вопроса записей fb, вероятно, немного глупо и бесполезно.не работает для больших наборов данных, так что если кто-то может предложить какие-либо предложения по другому подходу, который также будет оценен.
Большое спасибо.