javascript - 使用父模型创建子记录并返回嵌套在响应中

标签 javascript node.js loopback

我目前正在开发一个使用 loopback 的项目框架。这是非常令人沮丧的,因为我感觉好像我正在与这个框架斗争以完成一些极其简单的事情。当收到创建包含子级信息的父实例的请求时,我只需要创建新创建的关联实例。我已经让它工作到实际上创建了子级的程度,但是当我尝试设置属性以便我可以在响应中返回父级和子级时...它实际上并没有设置子级属性。这里发生了什么??? (编辑我假设模型实例实现了setter/getters以防止覆盖它设置的一些属性)

我在文档中找不到任何有关执行此类简单操作的内容。我能找到的最多的是嵌套模型的检索。当我的 parent 有很多 child 时,如果不发送 20 个请求,我似乎找不到任何关于创建它们的信息。

module.exports = function(Parent) {
  Parent.on('dataSourceAttached', () => {
    const create = Parent.create.bind(Parent);
    Parent.create = async (data, opts) => {
      const { Child } = Parent.app.models;
      let instance;
      try {
        instance = await create(data);
        if (data && data.children && Array.isArray(data.children)) {
          const { id: parentId } = instance;
          const children = await new Promise((resolve, reject) =>
            Child.create(
              data.children.map(m => Object.assign({}, m, { parentId })),
              opts,
              (err, res) => (err ? reject(err) : resolve(res))
            )
          );
          instance.children = children;
          console.log(instance.children === children); // false (wtf... #@#$#$%)
        }
        return instance;
      } catch (err) {
        // handle err
      }
    };
  });
};

最佳答案

让我尝试用简单的术语解释一下。

假设您的父模型是Library,您的子模型是Book。所以现在图书馆有很多书籍,并且书籍属于图书馆权利。

现在您可以创建LibraryBooks,如下所示

Library.create({
  name: "Library"
}, function(err, library) {
  // here library is created
  // Now if you have set relation, one can create books inside library like below
  library.books.create(book_array_data, function(err, books) {
    // here books are created
  })
})

这里我提到了Library.books,其中booksLibrary模型中的关系名称

希望这能解决您的问题。

关于javascript - 使用父模型创建子记录并返回嵌套在响应中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44425569/

相关文章:

javascript - 如何从模型中获取值并进入 View Javascript (Visual Studio 2015 mvc)

javascript - 存储组件环回上传文件

mysql - 环回自定义查询未给出响应

javascript - 切换 div 显示在 ajax 请求后不起作用 - Javascript/Ajax

javascript - Firebase Web - currentUser 返回 null

javascript - 如何在 JavaScript 运行时、回发之前在单击时立即为光标设置动画

JSON 模式验证 oneOf Two 或 allOf

javascript - Node.js NodeList 到 XML 字符串

javascript - 如何将 JSON 数据传递到 Express REST API

linux - 以太网 PHY 环回测试编码