【问题标题】:Mongoose Populate returning undefined when requiring schema from another File当需要来自另一个文件的架构时,Mongoose Populate 返回未定义
【发布时间】:2016-10-26 20:40:29
【问题描述】:

我正在制作一个节点应用程序。用户可以拥有最喜欢的房间列表(就像愿望清单一样)。我正在尝试将列表 ID 添加到用户最喜欢的列表中,但这总是未定义。如果我执行“console.log(users.favoriteListings);”输出变得未定义。请帮忙。

listingModel.js

var mongoose = require("mongoose");
var Schema = mongoose.Schema;//creating schema


var ListingSchema = new Schema({
location: {//ROOM LOCATION
            type: [Number],  // [<longitude>, <latitude>]
            index: '2d'      // create the geospatial index
    },
}
);


var Listing = mongoose.model('Listing', ListingSchema);

module.exports = Listing;

userModel.js

var mongoose = require("mongoose");
var Schema = mongoose.Schema;//creating schema
var Listing=require('../listing/listingModel');


var UserSchema = new Schema({

favoriteListings :  [{ type: Schema.Types.ObjectId, ref: 'Listing' }],


}

);


var User = mongoose.model('User', UserSchema);


module.exports = User;

userController.js

addFavListing:function(req,res){

//READ TOKEN AND FIND USER ID, IF USER HAS REACHED THIS POINT, THIS MEANS THAT TOKEN ALREADY
//HAS BEEN VERIFIED
var token = req.body.token || req.query.token || req.headers['x-access-token'];
var decoded=jwt.verify(token, app.get('superSecret'));
var id=decoded._doc._id;console.log(id);


User.find({_id:id}).populate('favoriteListings').exec(function(err,users) {
  if (err){ return handleError(err);}
    console.log(users.favoriteListings);

});

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    您从 mongoose 获得了一系列用户。 该数组没有 favoriteListings 属性。 但是数组中的每个用户都必须有他最喜欢的Listings。

    在你的 userController 中,尝试用这个替换 console.log:

    console.log(users.forEach(function(user) {
        console.log(user.favoriteListings);
    }));
    

    【讨论】:

      猜你喜欢
      • 2020-08-24
      • 2014-09-14
      • 2021-09-16
      • 1970-01-01
      • 2013-11-23
      • 2013-12-17
      • 2015-08-16
      • 1970-01-01
      相关资源
      最近更新 更多