gpt4 book ai didi

node.js - 从函数返回mongojs查询结果

转载 作者:可可西里 更新时间:2023-11-01 10:44:40 26 4
gpt4 key购买 nike

我做了下面的函数来从 ids 中获取用户名。它运作不佳。我可以写 console.log(result.first_name);在查询功能中,用户名显示在我的终端中,而不是浏览器中。我尝试添加“返回‘某物’;”在函数的末尾,查看它是否出现在浏览器中——它确实出现了。如何编写函数返回查询结果?

函数(app.js 中的全局函数)

function usernameFromId(id, callback){
db.users.findOne({ _id: ObjectId(id.toString()) }, function(err, result) {
var first_name = result.first_name;
console.log(first_name); // names show up in the console…
callback(first_name);
});
};

页面处理程序(在 app.js 中)

app.get('/books', function(req, res){
function timeSince(dato){
moment.lang('nb');
return moment(dato).fromNow();
};
db.books.find().sort({ added:-1 }, function(err, docs) {
var books = docs;
db.activity.find().limit(9).sort({ time:-1 }, function(err, docs) {
var activity = docs;
res.render('books', {
books: books,
activity: activity,
timeSince: timeSince,
usernameFromId: usernameFromId
})
});
});
});

模板(books.jade)

- each a in activity
p=usernameFromId(a.user_id, function(name){return name;})

最佳答案

否,因为 JavaScript 的异步特性。我在您的代码中添加了一些注释以指示实际执行顺序。这就是您收到错误的原因。

function usernameFromId(id){
var id = id.toString(); // 1
db.users.findOne({ _id: ObjectId(id) }, function(err, result) {
var first_name = result.first_name; // 3
});
return first_name; // 2
};

编辑:你可能想要像下面这样的东西

function usernameFromId(id, callback){
var id = id.toString();
db.users.findOne({ _id: ObjectId(id) }, function(err, result) {
var first_name = result.first_name;
callback(first_name);
});
};

关于node.js - 从函数返回mongojs查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com