我的User.js类中有以下代码:
exports.findUser = function(nameIn){
User.find({
name: nameIn
});
)};
如何让它'返回'找到的用户?有人告诉我,在Node上使用“return”不是最佳做法吗?我想我需要使用回调但是,怎么样?
这是我用来调用函数的代码:
var User = require("../models/user.js");
User.findUser(req.params.name, function(users) {
console.log(users);
});
答案 0 :(得分:1)
在findUser中,您似乎无法为回调提供一个位置。 mongoose查询本身也将文档(s或错误)返回给要处理的回调。
如果您想修改findUser
以符合您的使用方式:
exports.findUser = function(nameIn,callback){
User.find({name: nameIn}, function(err,user) {
if (err)
throw err;
callback(user)
});
)};
mongoose查询的结果(成功与否)被传递给查询参数中的函数(作为回调),这符合Node的异步性质。处理Node的非阻塞I / O的其他普遍接受的方法是events和streams,如果有些争议,promises等方法是可行的。
Mongoose本身使用callbacks in its guides,但也有promises available。
现在查看您的功能,您将其名称提交给查询,以及您要将返回的文档作为回调进行处理。猫鼬功能本身已经具备了做任何事情的能力:
User.find({name: req.params.name}, function(err,user) {
if (err)
throw err;
console.log(user);
});
如果您在findUser
将保持干燥的文档中有很多事情要做,那么定义findUser
可能是值得的。