Monk中fineOne()、find()函数的正确使用方法
The right way to use fineOne(), find() functions in Monk
我正在使用 expressjs 和 Monk 构建一个 RESTful API。有一个要求,我应该从不同的 collections (One-to-Many) 中抓取多个文档。但我不确定如何实现它。
例如,我需要从 Cars collection 中获取一个汽车信息,并从 Wheels collection 中获取 4 个车轮信息。我知道我应该使用 findOne() 来找到汽车,然后我可以从那里访问车轮的类型。
代码应该是这样的
var wheelType;
cars.findOne({_id: "C300"}).then((car) => {
wheelType = car["wheeltype"];
})
重点来了。我现在有了汽车信息,但我无法在范围之外定义一个变量来保存该值,并启动一个新的 find() 函数来收集车轮信息。
当然,我可以像这样尝试在 .then() 中做所有事情
cars.findOne({_id: "C300"}).then((car) => {
wheels.findOne({type: car["wheeltype"][0] }).then((wheel) => {
// combind the car with wheel
})
})
但是,如果我需要收集更多详细信息怎么办?是否只嵌套 findOne() 函数?
我可能将 MySQL 的想法错误地适用于 MongoDB(是否有其他方法可以实现 One-to-Many 映射?)。我期待这样的事情:
collection 我们有车
{
{
name:"c300",
wheeltype:["A","B","C"]
}
{
name:"R100",
wheeltype:["E","F","C"]
}
}
collection 车轮我们有
{
{
type:"A",
Brand:"BestWheel"
}
{
type:"C",
Brand:"GoodWheel"
}
}
在操作之后,我将其作为输出
{
name:"c300",
wheel:{
Brand:"BestWheel",
type:"A"
}
}
我觉得嵌套 findOne() 函数是合理的,因为它是一个异步回调函数。那么这道题如果要实现需求之类的,nested是必须的。
cars.finOne(...).then((car) =>{
wheels.findOne(...).then((wheel) =>{
// create a json that contains wheels in a car object.
}
}
我正在使用 expressjs 和 Monk 构建一个 RESTful API。有一个要求,我应该从不同的 collections (One-to-Many) 中抓取多个文档。但我不确定如何实现它。
例如,我需要从 Cars collection 中获取一个汽车信息,并从 Wheels collection 中获取 4 个车轮信息。我知道我应该使用 findOne() 来找到汽车,然后我可以从那里访问车轮的类型。
代码应该是这样的
var wheelType;
cars.findOne({_id: "C300"}).then((car) => {
wheelType = car["wheeltype"];
})
重点来了。我现在有了汽车信息,但我无法在范围之外定义一个变量来保存该值,并启动一个新的 find() 函数来收集车轮信息。
当然,我可以像这样尝试在 .then() 中做所有事情
cars.findOne({_id: "C300"}).then((car) => {
wheels.findOne({type: car["wheeltype"][0] }).then((wheel) => {
// combind the car with wheel
})
})
但是,如果我需要收集更多详细信息怎么办?是否只嵌套 findOne() 函数?
我可能将 MySQL 的想法错误地适用于 MongoDB(是否有其他方法可以实现 One-to-Many 映射?)。我期待这样的事情:
collection 我们有车
{
{
name:"c300",
wheeltype:["A","B","C"]
}
{
name:"R100",
wheeltype:["E","F","C"]
}
}
collection 车轮我们有
{
{
type:"A",
Brand:"BestWheel"
}
{
type:"C",
Brand:"GoodWheel"
}
}
在操作之后,我将其作为输出
{
name:"c300",
wheel:{
Brand:"BestWheel",
type:"A"
}
}
我觉得嵌套 findOne() 函数是合理的,因为它是一个异步回调函数。那么这道题如果要实现需求之类的,nested是必须的。
cars.finOne(...).then((car) =>{
wheels.findOne(...).then((wheel) =>{
// create a json that contains wheels in a car object.
}
}