Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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
Node.js 如何使用mongoose编写谓词实例方法?_Node.js_Express_Mongoose_Pug - Fatal编程技术网

Node.js 如何使用mongoose编写谓词实例方法?

Node.js 如何使用mongoose编写谓词实例方法?,node.js,express,mongoose,pug,Node.js,Express,Mongoose,Pug,这里有一个半noob节点的家伙。在我的玉模板。。。我非常希望能够有这样的界面: if currentUser.isMemberOfGroup(name) -// dosomething 然而,确定用户的成员身份涉及与猫鼬的接口。。。这总是一个异步的事情。以猫鼬文档为例,我想写一些类似的东西(对不起,这是用咖啡写的): 有没有办法让这个方法返回bool而不是exec函数的立即返回?设计这样一个界面的“正确”方法是什么 以下是俱乐部模型的其他部分: clubSchema = Mongoose

这里有一个半noob节点的家伙。在我的玉模板。。。我非常希望能够有这样的界面:

if currentUser.isMemberOfGroup(name)
  -// dosomething 
然而,确定用户的成员身份涉及与猫鼬的接口。。。这总是一个异步的事情。以猫鼬文档为例,我想写一些类似的东西(对不起,这是用咖啡写的):

有没有办法让这个方法返回bool而不是exec函数的立即返回?设计这样一个界面的“正确”方法是什么

以下是俱乐部模型的其他部分:

clubSchema = Mongoose.Schema
  name: String
  hashTag: String
  members: [{ type: Mongoose.Schema.Types.ObjectId, ref: 'User' }]

Jade是否支持异步函数(似乎不支持)?如果没有,则必须在渲染模板之前加载该值


事实上,这通常是一个良好的实践,因为它允许分离关注点(视图不应该知道数据库)。顺便说一下,如果您需要执行大量异步条件逻辑,请查看(我编写的一个模块)。另外,如果您需要执行多个数据库调用,我强烈建议您使用async.series或async.parallel来提高代码的可读性(嵌套深度不要超过几层)。

我建议您在路径中获取这些信息,尽可能与其他任务并行(这非常容易)然后将结果添加到本地数据中。或者,您可以在前端使用javascript异步获取此信息,并在完成后更新页面(即添加专用异步路由以提供此信息)。实际上,在jade渲染过程中编写阻塞代码(同步)与在控制器逻辑中等待此信息是一样的。此外,如果您只是查找成员中包含用户id的俱乐部,您可以通过mongoose获得用户所属的所有俱乐部:
Club.find{members:user.\u id},“name”,(呃,俱乐部)->
Tyler,非常感谢您的反馈。是的,在路线上设置似乎是下一个最好的选择…我只是不太喜欢设置一组局部变量,而不仅仅是传递一个对象。我更喜欢Rails范例,在将变量传递到视图之前,我不必烘焙每个数据点…但我会st必须适应。没问题,科迪。我完全理解你的观点。为了清理问题,我有时会将路由中的本地人包装在一个“viewModel”对象中(即
res.locals.viewModel={userMemberOf:clubs,user:user}
),只是为了组织更多。
clubSchema = Mongoose.Schema
  name: String
  hashTag: String
  members: [{ type: Mongoose.Schema.Types.ObjectId, ref: 'User' }]