Node.js 从nodejs mongodb中的模块返回/获取对象
我正在开发一个nodejs应用程序。Node.js 从nodejs mongodb中的模块返回/获取对象,node.js,model-view-controller,mongodb,module,express,Node.js,Model View Controller,Mongodb,Module,Express,我正在开发一个nodejs应用程序。 文件夹结构是 app app.js package.json ../model/schema.js ../controller/controller.js ../views 所有逻辑都在controller.js中,而app.js自己执行路由。。。。 我想知道如何从controller.js获取/返回数据(对象)到app.js。 我正在使用“return”将mongodb文档从控制器发送到应用程序,但其未定义。 这是app.js的代码。我已经删除了不必要的
文件夹结构是
app
app.js
package.json
../model/schema.js
../controller/controller.js
../views
所有逻辑都在controller.js中,而app.js自己执行路由。。。。
我想知道如何从controller.js获取/返回数据(对象)到app.js。
我正在使用“return”将mongodb文档从控制器发送到应用程序,但其未定义。
这是app.js的代码。我已经删除了不必要的代码
var express = require('express'),
app = express.createServer(express.logger()),
io = require('socket.io').listen(app),
routes = require('./routes');
var controller=require('./controller/controller');
var model=require('./model/schema');
app.get("/", function(req, res) {
res.render("chatroom.html");
});
io.sockets.on('connection', function (socket) {
socket.on('login',function(user)
{
var onliner=controller.loginUser(user);
console.log("Onlinersss: ",onliner);
});
socket.on('registerUser',function(user){
controller.registerUser(user);
});
});
以下是controller.js代码:
var model=require('../model/schema');
exports.loginUser=function(user)
{
model.registerUser.findOne({uname:user.uname,pass:user.pass},function(err,doc){
if(!err){
console.log("Here loggedin: ",doc);
return doc;
}
else
console.log("Invalid username or password");
});
};
JavaScript(因此node.js)是异步的。“返回文档”时,将返回在函数(err,doc)
中定义的匿名函数。。。不是您试图从中获取数据的函数loginUser
loginUser立即返回,并返回未定义(因为您没有指定任何其他内容)。要理解我的意思,请输入“return true;”作为loginUser中的最后一行,您会注意到返回的值为'true'
但是,您不希望返回值。您希望使用一个值进行回调。这超出了stackoverflow答案的范围,因此这里有一个很好的资源:
我刚刚推出了一个项目,该项目使用了几乎相同的库和数据库(非常类似于MongoDB)。基本上,您需要将
回调传递给控制器,并使用从数据库检索的数据调用它们。看看链接项目中的app.js和lib/db.js。Yeah。。我给你找到了返回的函数(err,doc),但我没有得到harry的教程。请建议其他方法。我在这里得到了我的答案:这是问题的详细解释和代码是的,回调用于场景…谢谢。