Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript strong循环嵌入未找到任何帮助程序方法_Javascript_Node.js_Loopbackjs_Strongloop - Fatal编程技术网

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}/历史记录
    不创建
    节点
    ,只创建
    历史记录
    的实例,并用id
    NodeId
    初始化它们与节点的关系。这就是您要查找的吗?