Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 使用父模型创建子记录并在响应中嵌套返回_Javascript_Node.js_Loopback - Fatal编程技术网

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

Javascript 使用父模型创建子记录并在响应中嵌套返回,javascript,node.js,loopback,Javascript,Node.js,Loopback,我目前正在从事一个使用该框架的项目。这是非常令人沮丧的,我觉得我好像是在用这个框架来完成一些非常简单的事情。我只需要在收到创建父实例的请求时创建新创建的关联实例,其中包含子实例的信息。我已经让它工作到了它确实创建了子对象的程度,但是当我尝试设置属性以便在响应中返回父对象和子对象时。。。它实际上没有设置children属性。这是怎么回事???(edit我假设模型实例实现setter/getter以防止覆盖它设置的某些属性) 我在文档中找不到任何关于做这样简单的事情的信息。我能找到的最多的是检索嵌套

我目前正在从事一个使用该框架的项目。这是非常令人沮丧的,我觉得我好像是在用这个框架来完成一些非常简单的事情。我只需要在收到创建父实例的请求时创建新创建的关联实例,其中包含子实例的信息。我已经让它工作到了它确实创建了子对象的程度,但是当我尝试设置属性以便在响应中返回父对象和子对象时。。。它实际上没有设置children属性。这是怎么回事???(edit我假设模型实例实现setter/getter以防止覆盖它设置的某些属性)

我在文档中找不到任何关于做这样简单的事情的信息。我能找到的最多的是检索嵌套模型。当我有一个有很多孩子的父母时,如果不发送20个请求,我似乎找不到任何关于创建它们的信息

module.exports=函数(父级){
on('dataSourceAttached',()=>{
const create=Parent.create.bind(Parent);
Parent.create=async(数据、选项)=>{
const{Child}=Parent.app.models;
举个例子;
试一试{
实例=等待创建(数据);
if(data&&data.children&&Array.isArray(data.children)){
const{id:parentId}=instance;
const children=等待新的承诺((解决、拒绝)=>
Child.create(
map(m=>Object.assign({},m,{parentId})),
选择,
(err,res)=>(err?拒绝(err):解决(res))
)
);
instance.children=children;
console.log(instance.children==children);//false(wtf…#@$#$$)
}
返回实例;
}捕捉(错误){
//处理错误
}
};
});

};让我试着用简单的术语解释一下

假设父模型是
Library
,子模型是
Book
。所以现在图书馆有很多书,书就属于图书馆了

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

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
,其中
books
Library
模型中的关系名称


希望这能解决您的问题。

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

假设父模型是
Library
,子模型是
Book
。所以现在图书馆有很多书,书就属于图书馆了

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

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
,其中
books
Library
模型中的关系名称


希望这能解决您的问题。

我目前通过在所有模型实例上调用
toJSON
来解决这个问题,然后根据需要修改它们,然后返回我想要的形状。我想一定有一些方法可以做到这一点,使用环回没有这种类型的事情。。。但我还没有弄明白。任何进一步的回答都是非常受欢迎的

module.exports=函数(父级){
on('dataSourceAttached',()=>{
const create=Parent.create.bind(Parent);
Parent.create=async(数据、选项)=>{
const{Child}=Parent.app.models;
试一试{
让孩子们;
const实例=等待创建(数据);
if(data&&data.children&&Array.isArray(data.children)){
const{id:parentId}=instance;
孩子们=等待新的承诺((决心,拒绝)=>
Child.create(
map(m=>Object.assign({},m,{parentId})),
选择,
(err,res)=>(err?拒绝(err):解决(res))
)
);
}
const resp=Object.assign(instance.toJSON(),{children:children.map(child=>child.toJSON());
返回响应;
}捕捉(错误){
//处理错误
}
};
});

}
我目前通过在所有模型实例上调用
toJSON
来解决这个问题,然后在返回我想要的形状之前根据需要对它们进行修改。我希望一定有某种方法可以使用环回来实现这一点,而不使用这种类型的东西……但我仍然没有弄清楚。任何进一步的答案仍然非常欢迎

module.exports=函数(父级){
on('dataSourceAttached',()=>{
const create=Parent.create.bind(Parent);
Parent.create=async(数据、选项)=>{
const{Child}=Parent.app.models;
试一试{
让孩子们;
const实例=等待创建(数据);
if(data&&data.children&&Array.isArray(data.children)){
const{id:parentId}=instance;
孩子们=等待新的承诺((决心,拒绝)=>
Child.create(
map(m=>Object.assign({},m,{parentId})),
选择,
(err,res)=>(err?拒绝(err):解决(res))
)
);
}
const resp=Object.assign(instance.toJSON(),{children:children.map(child=>child.toJSON());
返回响应;
}捕捉(错误){
//处理错误
}
};
});

};
我的问题既不是关系问题,也不是实际子实例的创建问题。我可以很好地执行此操作。父级:
instance=wait create(data);
Children:
const Children=wait new Promise((解析,拒绝)=>
我想做的是返回响应中嵌套了已创建子对象的父对象和子对象。实际上,我通过不返回模型实例(在父对象和子对象上使用
.toJSON
)解决了这一问题.我确信这并不理想,我认为应该有一些方法使用环回来实现这一点,但这是肯定的,我认为这是唯一的方法