send changes note.update [ok]

This commit is contained in:
life
2015-01-26 23:42:56 +08:00
parent b65a997cc8
commit 218671f53a
5 changed files with 133 additions and 18 deletions

47
node_modules/note.js generated vendored
View File

@@ -329,6 +329,23 @@ var Note = {
});
},
// 添加修改ServerNoteId; 更新修改usn
updateNoteForceForSendChange: function(note, callback) {
var me = this;
note.IsDirty = false;
note.InitSync = false;
note.LocalIsNew = false;
Notes.update({NoteId: note.NoteId}, {$set: note}, function(err, n) {
if(err || !n) {
log('updateNoteForceForSendChange err');
log(err);
return callback && callback(false);
}
return callback && callback(true);
});
},
// 服务器上的数据
// 为冲突更新, note已有有NoteId, ServerNoteId, 但NotebookId是服务器端的
updateNoteForceForConflict: function(note, callback) {
@@ -338,7 +355,7 @@ var Note = {
note.LocalIsNew = false;
Notebook.getNotebookIdByServerNotebookId(note.NotebookId, function(localNotebookId) {
note['NotebookId'] = localNotebookId;
Notes.update({NoteId: localNoteId}, {$set: note}, {}, function (err, cnt) { // Callback is optional
Notes.update({NoteId: note.NoteId}, {$set: note}, {}, function (err, cnt) { // Callback is optional
if(err) {
console.log(err);
callback && callback(false);
@@ -392,20 +409,21 @@ var Note = {
var conflictNotes = noteSyncInfo.conflicts;
log('fix note conflicts');
log(conflictNotes);
// 这里为什么要同步? 因为fixConflicts后要进行send changes, 这些有冲突的不能发送changes
if(conflictNotes) {
async.eachSeries(conflictNotes, function(note, cb) {
var noteId = note.NoteId;
async.eachSeries(conflictNotes, function(note, cb) { // note是服务器上最新的
var noteId = note.NoteId; // 本地noteId
// 复制一份
me.copyNoteForConfict(noteId, function(newNote) {
if(newNote) {
// 更新之前的
me.updateNoteForceForConflict(note, function(err, note2) {
cb();
if(!err) {
me.updateNoteForceForConflict(note, function(note2) {
if(note2) {
// 前端来处理, 全量sync时不用前端一个个处理
noteWeb && noteWeb.fixSyncConflict(note2, newNote);
}
cb();
});
} else {
cb();
@@ -473,13 +491,26 @@ var Note = {
// 处理删除的
noteWeb.deleteSync(noteSyncInfo.deletes);
},
// 获得用户修改的笔记
getDirtyNotes: function(callback) {
Notes.find({UserId: User.getCurActiveUserId(), IsDirty: true}, function(err, notes) {
if(err) {
log(err);
return callback && callback(false);
} else {
callback(notes);
}
});
},
// 在send delete笔记时成功
setNotDirty: function(noteId) {
NB.update({NoteId: noteId}, {$set:{IsDirty: false}})
Notes.update({NoteId: noteId}, {$set:{IsDirty: false}})
},
// 在send delete笔记时有冲突, 设为不删除
setNotDirtyNotDelete: function(noteId) {
NB.update({NoteId: noteId}, {$set:{IsDirty: false, LocalIsDelete: false}})
Notes.update({NoteId: noteId}, {$set:{IsDirty: false, LocalIsDelete: false}})
},
setIsNew: function(noteId) {
Notes.update({NoteId: noteId}, {$set:{LocalIsNew: true, IsDirty: true}})