Я действительно не знаю, как сформулировать этот вопрос, поэтому у меня возникли некоторые проблемы с поиском в Google, но я пытаюсь сделать, в основном, вспомогательную функцию для изменения данных mongoDB, и у меня есть списоккоманд в следующем формате:
var commands = {
"find": {
"names": {
"find":["query"],
"toArray":["callback"]
}
},
"sort": {
"names": {
"find":[],
"sort":["query"],
"toArray":["callback"]
}
},
"limit": {
"names": {
"find":[],
"limit":["number"],
"toArray":["callback"]
}
},
"deleteOne": {
"args":["query","callback"]
},
"findOne": {
"args":["query", "callback"]
},
"insertOne": {
"args":["query", "callback"]
},
"insertMany": {
"args":["array"]
},
"remove": {
"args":["query", "callback"]
},
"drop": {
"args":["callback"]
},
"updateOne": {
"args":["query", "newvalues", "callback"]
},
"aggregate": {
"args": ["query"],
"hasCB":"toArray"
},
"createCollection": {
"args":["string", "callback"]
}
};
, а затем словарь этих значений: идея состоит в том, чтобы вызвать определенную функцию mongoDB на основе ввода, например
Based off of this, I am able to make an array that looks like this:
[["find",[]],["sort",[{"name":-1}]],["toArray",[/*some function reference*/]]],
иосновываясь на этом, я хочу позвонить:
something.find().sort({"name":-1}).toArray(callback);
и, если у меня есть что-то вроде этого:
[["find", [{"name": "hi"}]], ["toArray", [/ ссылка на некоторую функцию /]]],
Я должен иметь возможность получить результат :thing.find ({"name": "hi"}). toArray (cb);
все в одной и той же функции.
Это НЕ ТОЛЬКО вопрос node.js, в большей степени JavaScript, который задан функцией в форматеиз
[[functionName1,arrayOfArguments1],[functionName2,arrayOfArguments2],[functionName3,arrayOfArguments3]]
как вы вызываете functionName1(...arrayOfArguments1)[functionName2](...arrayOfArguments2)[functionName3](...arrayOfArguments3)
,
, используя цикл или одну функцию, допустим?Вместо того, чтобы выписывать это вручную, как мне получить этот результат?В настоящее время я делаю это с помощью переключателя / кейса, но это не идеально:
switch(funcList.length) {
case 2:
console.log(col[funcList[0][0]](...funcList[0][1])[funcList[1][0]](...funcList[1][1]));
break;
case 3:
console.log(col[funcList[0][0]](...funcList[0][1])[funcList[1][0]](...funcList[1][1])[funcList[2][0]](...funcList[2][1]));
break;
}