Как правильно хранить ссылки на другие объекты в строке (например, при пометке друзей в комментарии Facebook)? - PullRequest
0 голосов
/ 10 марта 2020

В моем приложении Nodejs (использующем базу данных MongoDB) я пытаюсь создать систему, в которой пользователь может определять переменные. Поэтому я могу определить переменную с именем x и присвоить ей значение 3. Я также могу составить формулы, где выражение переменной может ссылаться на определенные переменные, которые уже были определены:

y = x + 5

z = x * y

В моей базе данных мои переменные хранятся так:

{ id: "uuid-1", name: "x", expression: "3" }
{ id: "uuid-2", name: "y", expression: "$x + 5" }
{ id: "uuid-3", name: "z", expression: "$x * $y" }

Я использую $ префикс, чтобы при оценке выражений я мог использовать регулярное выражение для изменения имени переменной на ее текущее значение.

Моя проблема в том, что если пользователь хочет изменить имя x на " a ", я должен обновить каждую переменную, выражение которой ссылается на" x ".

{ id: "uuid-1", name: "a", expression: "3" }
{ id: "uuid-2", name: "y", expression: "$a + 5" }
{ id: "uuid-3", name: "z", expression: "$a * $y" }

Я хочу, чтобы пользователь мог использовать имена переменных при определении выражения другой переменной, но я также не хочу чтобы обновить кучу переменных при изменении имени переменной.


Один из примеров того, чего я пытаюсь достичь, - это «пометка тегами» на Facebook. Поэтому, если я оставляю комментарий и хочу отметить 2 друзей, я просто добавляю префикс @ перед их именем.

Вы видели это? @Roger @ Bob

Но в бэк-энде / базе данных Facebook мой комментарий, вероятно, не сохраняется как есть. Если когда-либо Роджер решит изменить свое имя в Facebook на Алан, его имя в моем комментарии должно быть изменено автоматически.

Вы видели это? @ Алан @ Боб

Ты хоть представляешь, как обычно решается такая проблема?

Спасибо большое!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...