Я пытаюсь добиться простых методов set / get для пользовательских данных в mongodb
set
метод прост:
set(id, path, value) {
const update = {
$set: {
"__updtAt": Date.now()
}
};
update.$set[path] = value;
return this.collection.updateOne({_id: id}, update, {upsert: true});
}
, и мы можем использовать его как:
await sessionManager.set(clientSessionId, "aaa.bbb.ccc", 10);
очень просто, но как построить get
метод, который работает как показано ниже?
await sessionManager.get(clientSessionId, "aaa.bbb.ccc"); //returns 10
await sessionManager.get(clientSessionId, "aaa.bbb"); //returns {ccc: 10}
await sessionManager.get(clientSessionId, "aaa"); //returns {aaa: {bbb: {ccc: 10}}}
await sessionManager.get(clientSessionId, "aaa.bbb.EEE"); //returns undefined
await sessionManager.get(clientSessionId, "zzz"); //returns undefined
Как я вижу, у драйверов mongodb для node.js есть только опция для возврата всего документа, который соответствуетзапрос.