【发布时间】:2016-12-11 16:31:42
【问题描述】:
我有两个集合,一个用于用户,另一个用于帖子,我正在尝试获取用户名,例如谁在页面上发布了提要。目前我得到了这样的东西 IMAGE
并且想要实现类似 twitter 的东西。但由于用户数据和帖子位于两个不同的集合中。我只能在帖子上获得“_id”。以下是文件
模型/story.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var StorySchema = new Schema({
creator: {type:Schema.Types.ObjectId, ref: 'User'},
content: String,
create: { type:Date, default: Date.now }
});
module.exports = mongoose.model('Story', StorySchema);
模型/user.js
var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
name:String,
username: { type:String, required: true, index: { unique: true}},
password: { type: String, reuired: true, select: false }
});
UserSchema.pre('save', function(next){
var user = this;
if(!user.isModified('password')) return next();
bcrypt.hash(user.password, null, null, function(err, hash){
if(err) return next(err);
user.password = hash;
next();
});
});
UserSchema.methods.comparePassword = function(password){
var user = this;
return bcrypt.compareSync(password, user.password);
}
module.exports = mongoose.model('User', UserSchema);
控制器/Storyctrl.js
angular.module('storyCtrl', ['storyService'])
.controller('StoryController', function(Story, socketio){
vm = this;
vm.stories=[];
vm.getStories = function(){
Story.all()
.success(function(data){
vm.stories = data;
});
};
vm.createStory = function(){
vm.message = '';
Story.create(vm.storyData)
.success(function(data){
vm.storyData.content = '';
vm.message = data.message;
// vm.getStories(); // Refresh
// vm.stories.push(vm.storyData);
});
};
vm.getStories();
socketio.on('story', function(data){
vm.stories.push(data);
});
})
.controller('allStoriesController', function(stories, socketio){
var vm = this;
vm.stories = stories.data;
socketio.on('story', function(data){
vm.stories.push(data);
});
})
HTML 文件
<div>
<div class="col-md-4">
</div>
<div class="col-md-4">
<div class="row">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Stories</h4>
</div>
<div class="panel-body">
<ul class="list-group" >
<li class="list-group-item" ng-repeat="s in story.stories | reverse">
{{ s.content | date:"h:mma 'on' MMM d, y" }}
<small>Posted by @ {{s.creator}}</small>
<small class="pull-right">{{s.create | date:"h:mma 'on' MMM d, y"}}</small>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-md-4">
</div>
</div>
我是 nodejs 和 mongodb 的新手,如果有一个小错误或者我还没有涉及到的东西,请在 cmets 中饶恕我。
【问题讨论】: