Javascript mongoose、node和异步编码howto
好的,我需要打开灯泡。我已经为此挣扎了将近一个星期,只是越来越困惑 我有以下收藏:Javascript mongoose、node和异步编码howto,javascript,node.js,mongodb,asynchronous,mongoose,Javascript,Node.js,Mongodb,Asynchronous,Mongoose,好的,我需要打开灯泡。我已经为此挣扎了将近一个星期,只是越来越困惑 我有以下收藏: Customers Orders (linked to Customer by Customer_id) OrderLines (linked to Order by Order_id) Salesreps (linked to Customer by Customer_id) 我没有任何嵌入式文档 我想做的是获取一个包含以下内容的数据字符串: Customer_1 Order#1:First_OrderLi
Customers
Orders (linked to Customer by Customer_id)
OrderLines (linked to Order by Order_id)
Salesreps (linked to Customer by Customer_id)
我没有任何嵌入式文档
我想做的是获取一个包含以下内容的数据字符串:
Customer_1
Order#1:First_OrderLine_of_Order_Number
Order#n:First_OrderLine_of_Order_Number
SalesRep_of_Customer_Name
...
Customer_n
Order#1:First_OrderLine_of_Order_Number
Order#n:First_OrderLine_of_Order_Number
SalesRep_of_Customer_Name
有人能给我一些伪代码来解释如何在node和mongoose中做到这一点吗?需要教我如何钓鱼;) 在处理NoSQL(这项技术的一个非常糟糕的名字)时,您必须以不同的方式设置数据集
在mongo中,您没有连接,因此必须重构数据。尽可能考虑嵌入文档(例如带有嵌入订单行的订单)
我会用这样的方法:
Order: {
_id: ObjectId
, user: DBRef // (or ObjectId)
, lines: [
{foo: "bar"}
, ...
]
}
User: {
_id: ObjectId
, salesref: { _id: ObjectId, name: "James Brown"}
, more_data ...
}
SalesRef: {
_id: ObjectId
, more_data...
}
保持对引用集合的最小引用,您甚至可以在订单中添加一个
用户:{name:“Max Power”,sales:“James Brown”}
,但请记住,在文档修改/插入期间,您需要手动保持一致。很容易感到沮丧和困惑,尤其是当你试图一次学习不止一件事情的时候。不要只是四处闲逛,试图让东西发挥作用;从底部开始,一路往上爬。在你完全理解它所依赖的层之前,抵制住进入下一层的诱惑
您将在第1步学习
forEach
技能,在第2步学习异步回调技能,在第3步了解如何find
您的文档,并在第4步将所有内容组合在一起。如果你真的想“学会钓鱼”,没有捷径可走。谢谢-我需要清理的不是真正的数据库结构(这是下一项工作)。由于finds({})和forEach的回调,我可以得到所有数据,只是没有按照我期望的顺序。我知道,但是手工使用连接很容易出错。一旦我有时间,我会用一些伪代码逻辑编辑我的答案。顺便说一句,我会使用的并行
函数使其可行。开始在节点中使用异步库,有点帮助;)到了我有工作的时候了。然而,还不能完全确定它为什么会起作用。。。这就是本周的计划!