Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在MongoDB中将ObjectId与Mongoose一起使用_Angularjs_Mongodb - Fatal编程技术网

Angularjs 在MongoDB中将ObjectId与Mongoose一起使用

Angularjs 在MongoDB中将ObjectId与Mongoose一起使用,angularjs,mongodb,Angularjs,Mongodb,我最近开始将MongoDB与Mongoose一起使用,并提出了一个看似简单的问题。 到目前为止,我有两个模型,一个用户和一个帖子。帖子由用户拥有,这由ObjectId引用。 以下是模型: 发布 var mongoose = require('mongoose'); var PostSchema = new mongoose.Schema({ text: String, stars: { type: Number, default: 0 }, score: { type: Numb

我最近开始将MongoDB与Mongoose一起使用,并提出了一个看似简单的问题。 到目前为止,我有两个模型,一个用户和一个帖子。帖子由用户拥有,这由ObjectId引用。 以下是模型:

发布

var mongoose = require('mongoose');

var PostSchema = new mongoose.Schema({

  text: String,
  stars: { type: Number, default: 0 },
  score: { type: Number, default: 0 },
  user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', default: '554cb70669234d6f04f425a2' }
});

PostSchema.methods.addstar = function(cb) {
  this.stars += 1;
  this.save(cb);
};

mongoose.model('Post', PostSchema);
用户

var mongoose = require('mongoose');
var crypto = require('crypto');
var jwt = require('jsonwebtoken');

var UserSchema = new mongoose.Schema({
  username: {type: String, lowercase: true, unique: true},
  hash: String,
  salt: String
});

mongoose.model('User', UserSchema);
当我想用angular使用HTML页面上的数据时,我试图通过以下方式访问用户名:

{{post.user.username}}

然而,这并没有产生任何结果。 我是否需要使用userid发出单独的get请求,或者它们是一种更直观的方式

如前所述,我理解这个问题似乎很基本。我只是在学习Mongo,之前曾使用过Rails数据库,其中很多功能都不清楚


有什么想法吗?

也许答案就在这里:

总结:

进行查询时,您可以像这样填充引用:

Post.findOne({_id: 123})
.populate('user')
.exec(function(err, post) {
    // do stuff with post
});

因此,在执行查找之前,请告诉mongo填充用户。

以下代码返回所有帖子,其中每个帖子都填充了用户。我忘了在Post.find()的方法调用中包含空对象


谢谢你,图沃基。这对一个职位有效。在我最初的get请求中,我得到了所有的帖子,并希望填充每个帖子的用户名。此代码无效:
Post.find().populate('user','username').exec(函数(err,posts){if(err){return(err);}res.json(posts);})太好了!事实上,我的回答是针对findOne方法的,但对于其他发现也是如此。
router.get('/posts', function (req, res, next) {
  Post.find({})
  .populate('user')
  .exec(function (err, posts) {
    if(err){ return(err); }
    res.json(posts);
  });
});