从mongoose数据库获取值时未定义

时间:2018-04-05 09:26:57

标签: angular express mongoose mean-stack

对于学校,我必须使用MEAN堆栈制作一个带有角度的网站。 根据Insomnia,我的GET方法在json对象中返回我的法术和注释。

router.get('/API/posts/', function(req, res, next) {
  let query = Post.find().populate("comments").populate("spell");
  query.exec(function(err, posts){
  if(err) { return next(err); }
    res.json(posts);
  });
});

每当我尝试使用我的咒语时,我都会获得undefined。这个方法从get方法获取我的项目(我得到除了我的法术之外的所有值)

get posts() : Observable<Post[]> {
return this.http.get(`${this._appUrl}/posts/`)
  .pipe(
    map((list: any[]): Post[] =>
      list.map(Post.fromJSON)
  ));
}

我的fromJSON方法:

static fromJSON(json: any): Post {
  const post = new Post(
    json.title,
    json.description,
    json.originalPoster,
    json.category,
    json.spell.map(Spell.fromJSON)
  );
  post._id = json._id;
  post._comments = json.comments;
  return post;
}

一切都有效,直到我将这个咒语添加到我的Post模块中。我一直在寻找很长一段时间,所以如果你们能帮助我的话会很棒

我的架构:

var mongoose = require('mongoose');

var PostSchema = new mongoose.Schema({
  title: String,
  description: String,
  spell: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Spell'
  },
  originalPoster: String,
  category: String,
  dateCreated: { type: Date, default: Date.now },
  comments: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Comment'
  }],
  votes: { type: Number, default: 0 }
}); 
mongoose.model('Post', PostSchema);

1 个答案:

答案 0 :(得分:0)

尝试populate("comments spell");