所以我要做的就是创建一篇博文,让所有观看博客的人实时更新博客文章。现在我有了基本的应用程序设置,允许我列出所有帖子,创建帖子,将其保存到mongo并让它实时更新为创建帖子的人。标准SPA吧!?
所以我想我可以使用socket.io来实现所有观看者的实时更新。我设法将socket.io连接到所有观看者实时更新但使用提交表单中的数据的点,而不是像创建帖子的人一样从mongo返回结果。
因此,更新到所有观看者的帖子都缺少一些数据,例如由mongo创建的日期。
这是Admin Page,Form& NG-Repeat - 我很满意这段代码
<div ng-controller="postsController" class="col-sm-8">
<h3>Posts Controller</h3>
<form ng-submit="addPost()">
<label>Title: </label><br /><input type="text" ng-model="post.title" autofocus required></input><br />
<label>By: </label><br /><input type="text" ng-model="post.by" required></input><br />
<label>Body: </label><div text-angular colorpicker ng-model="post.body" ></div><br />
<button type="submit">Post</button>
</form>
<br />
<div ng-repeat="post in posts | orderBy: '-created_at' | limitTo: 1">
<div>
Title: {{ post.title }} <br />
Created: {{ post.created_at | date: 'MMM d, y' }} - By: {{ post.by }} <br /><br />
<div ta-bind ng-model="post.body">{{ post.body }}</div>
<hr />
</div>
</div>
</div>
这是博客页面
<div ng-repeat="post in posts | filter:search | orderBy: 'created_at'">
<div>
Title: {{ post.title }} <br />
Created: {{ post.created_at | date: 'MMM d, y' }} - By: {{ post.by }} <br /><br />
<div ta-bind ng-model="post.body">{{ post.body }}
</div>
<hr />
</div>
</div>
这是Angular postsController&amp; socket.io监听器
myApp.controller('postsController', ['$scope', '$location', 'postService', 'socketio', function($scope, $location, postService, socketio) {
$scope.posts = postService.querying();
socketio.on('post', function(msg) {
//var msgPost =
$scope.posts.push(msg);
console.log(msg);
//console.log(msgPost);
});
$scope.addPost = function () {
postService.create($scope.post)
.$promise.then(
function(result) {
$scope.posts = result;
$scope.post = {};
console.log(result);
}
);
};
}]);
这是NodeJS postsController&amp; socket.io发射器
var Post = require('../models/Posts');
module.exports.create = function (req, res) {
var post = new Post(req.body);
post.save(function (err) {
Post.find({}, function (err, results) {
res.json(results);
io.emit('post', req.body);
});
});
};
我可以清楚地看到我将req.body传递给io.emit,但我无法弄清楚我需要放在哪里。我尝试了几件事,但都没有。
提前致谢。
西蒙
答案 0 :(得分:0)
我可以确认我之前的评论和更改确实解决了我的错误。