对于学校,我必须使用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);
答案 0 :(得分:0)
尝试populate("comments spell");