gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:41 26 4
gpt4 key购买 nike

我目前正在开发一个使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com