Lom*_*oce 4 mongoose mongodb node.js express
我是Node.JS的新手,无法找到解决方案.我正在构建一个从mongo中检索数据的宁静服务.
app.js
var database = require('./database.js');
...
app.get('/metadata', function(req, res) {
console.log("GET: metadata");
res.send(database.getMetadata(null));
});
app.get('/metadata/:id', function(req, res) {
console.log("GET: metadata");
res.send(database.getMetadata(req.params.id));
});
...
Run Code Online (Sandbox Code Playgroud)
database.js
exports.getMetadata = function (id) {
console.log('getting metada...')
if (id == null) {
return FolderInfo.find({}, null, null, function (err, metadatas) {
if (!err) {
console.log(metadatas);
return metadatas;
} else {
return console.log(err);
}
});
}
else {
return FolderInfo.findById(id, function (err, metadatas) {
if (!err) {
return metadatas;
} else {
return console.log(err);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多不同的方法.但总是得到这个结果:
{
options: {
populate: { }
},
_conditions: { },
_updateArg: { },
op: "find"
}
Run Code Online (Sandbox Code Playgroud)
但我的console.log(metadatas); line正在将结果打印到控制台.我正在使用所有最新的软件包.有人能帮助我吗?
Jon*_*ski 10
您不能将同步returns与异步函数混合在一起findById,因为它违背了异步操作的基本特性:"立即退出,稍后完成 ".
你必须调整getMetadata接受一个回调函数时,可以调用findById已稍后完成:
exports.getMetadata = function (id, callback) {
// ...
};
Run Code Online (Sandbox Code Playgroud)
而且,metadatas只有在没有err:
if (!err) {
return metadatas;
} else {
// ...
}
Run Code Online (Sandbox Code Playgroud)
callback在任何一种情况下你都要打电话给:
callback(err, err ? null : metadatas);
Run Code Online (Sandbox Code Playgroud)
在上下文中,可能是:
FolderInfo.find({}, null, null, function (err, metadatas) {
if (err) {
console.log(err);
} else {
console.log(metadatas);
}
callback(err, err ? null : metadatas);
});
Run Code Online (Sandbox Code Playgroud)
或者可能只是:
FolderInfo.find({}, null, null, callback);
Run Code Online (Sandbox Code Playgroud)
然后传递getMetadata一个回调函数,在调用时处理响应:
app.get('/metadata', function(req, res) {
console.log("GET: metadata");
database.getMetadata(null, function (err, data) {
res.send(data);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4585 次 |
| 最近记录: |