Skip to content

Commit

Permalink
finish add friend
Browse files Browse the repository at this point in the history
  • Loading branch information
lzwjava committed Sep 29, 2014
1 parent b5db0a4 commit d61d8da
Show file tree
Hide file tree
Showing 7 changed files with 424 additions and 7 deletions.
160 changes: 158 additions & 2 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 12 additions & 3 deletions cloud/app.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
// 在 Cloud code 里初始化 Express 框架
var express = require('express');
var app = express();

var muser = require('cloud/muser');
var mutil = require('cloud/mutil');
// App 全局配置
app.set('views','cloud/views'); // 设置模板目录
app.set('views', 'cloud/views'); // 设置模板目录
app.set('view engine', 'ejs'); // 设置 template 引擎
app.use(express.bodyParser()); // 读取请求 body 的中间件

// 使用 Express 路由 API 服务 /hello 的 HTTP GET 请求
app.get('/hello', function(req, res) {
app.get('/hello', function (req, res) {
res.render('hello', { message: 'Congrats, you just set up your app!' });
});

app.get('/test', function (req, res) {
var fromUserId = '5427ce8be4b0e9d9a645c9c7';
var toUserId = '53f0d534e4b0c1ae470ca958';
muser.addFriendForBoth(fromUserId, toUserId).then(function () {
res.send('ok');
}, mutil.renderErrorFn(res));
});

// 最后,必须有这行代码来使 express 响应 HTTP 请求
app.listen();
18 changes: 16 additions & 2 deletions cloud/main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
require("cloud/app.js");
// Use AV.Cloud.define to define as many cloud functions as you want.
// For example:
AV.Cloud.define("hello", function(request, response) {
var mlog = require('cloud/mlog');
var mutil = require('cloud/mutil');
var muser = require('cloud/muser');

AV.Cloud.define("hello", function (request, response) {
response.success("Hello world!");
});
});

AV.Cloud.define("addFriend", function (req, res) {
var params = req.params;
//var toUserId = params.toUserId;
var fromUserId = params.fromUserId;
var toUserId = params.toUserId;
muser.addFriendForBoth(fromUserId, toUserId).then(function () {
res.success();
}, mutil.cloudErrorFn(res));
});
35 changes: 35 additions & 0 deletions cloud/mlog.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* Created by lzw on 14-8-8.
*/

var open = !__production;
//var open=true;
var util = require('util');

function startWith(s, prefix, f) {
if (s.indexOf(prefix) == 0) {
f.call();
}
}

function filterFn(s, f) {
startWith(s, '', f);
//f.call();
}

function logError(error) {
error = util.inspect(error);
console.log(error + '');
}

function log(s) {
s = s + '';
if (open) {
filterFn(s, function () {
console.log(s);
});
}
}

exports.log = log;
exports.logError = logError;
40 changes: 40 additions & 0 deletions cloud/muser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* Created by lzw on 14-9-29.
*/
var mutil = require('cloud/mutil');

function findUser(userId) {
var q = new AV.Query('_User');
return q.get(userId);
}

function addFriend(user, friend) {
var friends = user.relation('friends');
friends.add(friend);
return user.save();
}

function removeFriend(user, friend) {
var friends = user.relation('friends');
friends.remove(friend);
return user.save();
}

function addFriendForBoth(fromUserId, toUserId) {
var p = new AV.Promise();
findUser(fromUserId).then(function (fromUser) {
findUser(toUserId).then(function (toUser) {
addFriend(fromUser, toUser).then(function () {
addFriend(toUser, fromUser).then(function () {
p.resolve();
}, mutil.rejectFn(p))
}, mutil.rejectFn(p))
}, mutil.rejectFn(p));
}, mutil.rejectFn(p));
return p;
}

exports.findUser = findUser;
exports.addFriend = addFriend;
exports.removeFriend = removeFriend;
exports.addFriendForBoth = addFriendForBoth;
Loading

0 comments on commit d61d8da

Please sign in to comment.