gpt4 book ai didi

javascript - 获取返回的 Mongoose 查找对象

转载 作者:行者123 更新时间:2023-11-28 18:40:22 27 4
gpt4 key购买 nike

您好,我正在尝试访问从 Mongoose 中查找返回的元素,但在异步和回调情况下遇到了一些问题。

这是为了更好地理解的代码。

function retrieveBudgets(email, callback) {
models.User.find({email: email},{budget:true}, function(err,budgets) {
if (err) {
callback(err, null);
} else {
callback(null, budgets);
}
});
};

retrieveBudgets(user.email, function(err, budgets) {
if (err) {
console.log(err);
}
budgets.forEach(function(budget){
console.log(JSON.stringify(budget, null, 4));
});

});

因此,这行 console.log(JSON.stringify(budget, null, 4)); 工作正常,并以 json 格式将对象打印到屏幕,但如何将每个对象存储到数组中来自这里的物体?如果我尝试在同一行推送到数组,则会收到错误。

我看到了一些类似的问题,但我没有取得任何进展。编辑:____________________________________________________________我做了一些黑客让它工作,我移动了 res.render ,以便渲染页面是在回调的同时完成的,但我看不出这是正确的解决方案任何想法

    var user=req.session.user;
res.locals.budgets=[];

function retrieveBudgets(email, callback) {
models.User.find({email: email},{budget:true}, function(err, budgets) {
if (err) {
callback(err, null);
} else {
callback(null, budgets);
}
});
};

retrieveBudgets(user.email, function(err, budgets) {
if (err) {
console.log(err);
}
res.locals.budgets = budgets.map((function(b){ return b; });

res.render('budget/budget.jade',{ csrfToken: req.csrfToken() });
});

这很有效,我可以通过本地人获取预算,因此任何对此的反馈都会很好,我怀疑这是正确的方法吗?

最佳答案

retrieveBudgets 调用获得的 budgets 返回值已经是一个数组。

这可以通过对数组方法 budgets.forEach 的调用来证明。

是否有特定需要从项目创建新数组?这很容易做到:

var myNewArray =预算.map((function(b){ return b; });

这行代码将 map将原始预算数组转换为包含每个预算项目的新数组。

还有其他创建新数组的方法,具体取决于您需要执行的操作

根据下面的评论更新

what i really want to do to is use the budgets outside of the query so I can pass it to the view

在这种情况下,您需要从回调中渲染 View 并将预算传递给 View :


router.get("/foo", function(req, res, next){

retrieveBudgets(user.email, function(err, budgets) {
if (err) { return next(err); }

res.render('budget/budget.jade',{
budgets: budgets,
csrfToken: req.csrfToken()
});
});

});

这是实现这项工作的唯一且正确的方法。

如果您尝试在不等待回调完成的情况下执行此操作,则 budgets 数组中不会有任何数据。因此,您必须等待回调执行,然后使用传递给 View 的预算(或单个预算或其他内容)来渲染 View 。

(使用 Promise 有多种变体,但我发现回调是处理这个问题的更简单的方法。)

关于javascript - 获取返回的 Mongoose 查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36201879/

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