Javascript strong循环嵌入未找到任何帮助程序方法
有些问题我在文档中找不到答案 我试图得到一个这样的结构:Javascript strong循环嵌入未找到任何帮助程序方法,javascript,node.js,loopbackjs,strongloop,Javascript,Node.js,Loopbackjs,Strongloop,有些问题我在文档中找不到答案 我试图得到一个这样的结构: Node: id: '1sdf12asd123', name: 'node1', history: [ ts: 234234234234, data: { 'foo': 'bar' } ], ... 因此,每个节点都有许多历史记录项。我希望能够在不覆盖任何内容的情况下,将新数据推送到那里 现在,我不想将所有内容都存储在每个节点下,而是存储在一个单独的文档中,因此
Node:
id: '1sdf12asd123',
name: 'node1',
history:
[ ts: 234234234234,
data: { 'foo': 'bar' }
],
...
因此,每个节点都有许多历史记录项。我希望能够在不覆盖任何内容的情况下,将新数据推送到那里
现在,我不想将所有内容都存储在每个节点下,而是存储在一个单独的文档中,因此我认为EmbeddesMany适用于此:
{
"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()
但是我尝试了所有不同的方法,从远程方法
到操作挂钩
,但是我找不到提到的助手方法。没有关于这方面的代码示例
我认为这部分是因为文档有时不是很清楚,或者假设对其他API框架如何工作有一定程度的了解。我已经阅读了每一页可以找到的文档。(一个例子是核心概念
页面链接到弃用的模型挂钩
页面。)
我想知道的是:
使用.add()
正确地将数据推送到模型上,并让环回管理它应该存储的位置,因此当我查询节点时,我将返回所有历史记录
项,除非我在服务器端阻止(因为我不希望每个节点数据请求本身都这样)
为每个历史记录项创建一个单独的文档(其中包含nodeId)是一个好主意,还是最好为每个节点创建一个历史记录项,并在其中存储历史记录?我的主要问题是,如何在不覆盖任何内容的情况下推送
数据,或者使用时间戳作为键
历史记录
模型是否需要知道它们与节点
与BelongsTo
之间的关系,或者它是否可以忽略它,并且仍然有节点
。将(每个历史记录项添加到模型中如果我正确理解了您的问题,您可以改为
节点
有许多
历史记录
。然后使用从关系生成的所有方法:
使用关系创建新的历史记录
POST api/Node/{NodeId}/Histories/
通过适当地编写JSON数据,您应该能够通过一个POST请求创建多个历史实例
{
{
ts: 26283829879
},
{
ts: 5335329923
}
}
从节点获取单个历史记录的步骤
GET api/Node/{NodeId}/Histories/{HistoryId}/
您还可以从节点获取所有历史记录,编辑给定节点的任何历史记录,等等
这有用吗
请参阅StrongLoop docs以了解。我需要能够
。一次添加多个历史项目。没有任何东西阻止您这样做。我相信持久化模型本机支持这一点。请参阅可选数据参数。可以是单个模型实例,也可以是一组实例。我已经编辑了我的帖子,看看这是否解决了您的问题。问题lem就是说,我不想创建节点,它已经存在了,所以我必须在findById
中使用它,然后添加一些东西…POST-api/Node/{NodeId}/历史记录
不创建节点
,只创建历史记录
的实例,并用idNodeId
初始化它们与节点的关系。这就是您要查找的吗?