猫鼬填充仅显示对象

时间:2019-02-01 15:19:57

标签: node.js mongodb express mongoose

使用猫鼬的填充物将用户喜欢的“食物”添加到用户对象中。

设置:

User.findById(req.user._id, function(err, user) {

            var newFood = new Food({
            name: "tacos",
            image: 'test',
            });

            user.foods = newFood
            user.save();

然后:

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

        User.find({currentUser: req.user})
        .populate({path: 'foods'}).
        exec(function (err, foods) {
        if (err) return (err);

当我console.log user.foods.name未定义时。 user.foods是一个对象

如何获取user.foods.name?在这种情况下,需要“炸玉米饼”

1 个答案:

答案 0 :(得分:-1)

您的问题是,您尚未真正了解callbacksasync/await的工作方式。您的代码执行并没有按照您希望的方式执行,因此您将着陆于尚未设置变量的部分。

这个问题不能回答只有这个特定的问题/答案。

请观看一些有关什么是回调的教程(或者,如果愿意,请阅读)。

如果您可以自由选择JS的版本,那么我建议您使用async/await。它使事情变得更加结构化,可读性和可理解性。

但是:首先,您需要完全了解它。只是复制 - 粘贴它会导致错误和误解(相信我)。

就像Google那样找到那些指南,我个人会搜索youtube-tutorial(有成百上千的结构化指南)。