Некоторые вопросы, на которые я не могу найти ответ в документации.Strongloop EmbedsMany вспомогательные методы не найдены
Я пытаюсь получить структуру, как это:
Node:
id: '1sdf12asd123',
name: 'node1',
history:
[ ts: 234234234234,
data: { 'foo': 'bar' }
],
...
Таким образом, каждый отдельный узел, имеет много элементов истории. И я хочу иметь возможность получать push
новых данных, не перезаписывая ничего.
Теперь, я не хочу, чтобы хранить все под каждым узлом, а в отдельном документе, так что я думаю, что embedsMany будет одним из лучших вариантов:
{
"name": "Node",
"plural": "Nodes",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string"
}
},
"validations": [],
"relations": {
"history": {
"type": "embedsMany",
"model": "History",
"foreignKey": "HistoryId"
}
},
"acls": [],
"methods": {}
}
Так история будет просто:
{
"name": "History",
"base": "PersistedModel",
"idInjection": true,
"properties": {
"ts": {
"type": "Date"
},
"data": {
"type": "Object"
}
},
"validations": [],
"relations": {
"node": {
"type": "belongsTo",
"model": "Node",
"foreignKey": "NodeId"
}
},
"acls": [],
"methods": {}
}
Я не уверен, что часть foreignKey права, но я пробовал много разных комбинаций, и это кажется логичным.
Модель истории не является общедоступной, поэтому не отображается как конечная точка. И я хочу использовать отношения как можно больше, а не иметь отдельную конечную точку.
Основная проблема здесь я хотел бы использовать Nodes.history.add()
, как описано here.
Но я пробовал все разные методы от Remote methods
до Operation Hooks
, но я не могу найти упомянутые вспомогательные методы. Об этом нет примера кода.
Отчасти это связано с тем, что документация иногда не очень ясна или предполагает определенную степень знаний о том, как работают другие API-фреймворки. И я читал о каждой странице документации, которая должна быть найдена. (Одним из примеров является Core concepts
страница ссылается на устаревшей Model hooks
странице.)
Что я хотел бы знать:
- Есть идея использовать
.add()
право передавать данные на модели, и иметь обратную петлю управляйте им, где он должен хранить его, поэтому, когда я запрашиваю Узел, я бы возвращал все пунктыhistory
, если только я не предотвращу это на стороне сервера (потому что я не хочу, чтобы каждый запрос для самих данных узла. - Is это хорошая идея создать отдельный документ для каждого элемента History, с nodeId в нем или лучше сделать один элемент histoy на узел и сохранить histo внутри них? Основной проблемой для меня является: Как сделать данные
push
, не перезаписывая что-либо, и, возможно, используяtimeStamp
в качестве ключа? - ли
History
модель нужно знать об их отношении кNodes
сBelongsTo
или это может быть не обращая внимания на него и до сих порNodes
.add()
каждого пункта истории к нему?
Мне нужно уметь «.add» несколько элементов истории сразу. – TrySpace
Нет ничего, что мешает вам это сделать. Я полагаю, что это основано на модели Persisted. См. Https://apidocs.strongloop.com/loopback/#persistedmodel-create * Необязательный аргумент данных. Может быть либо экземпляром одной модели, либо массивом экземпляров. * Я отредактировал свой пост, посмотрим, решает ли эта проблема. – Overdrivr
Проблема с тем, что я не хочу 'создавать'' Node', он уже существует, поэтому я должен использовать его в 'findById', а затем добавить что-то ... – TrySpace