2016-06-28 5 views
0

私は次のコードを持っています.1人のユーザーがAjaxクエリーを送信してタスク(洗濯機)を開始し、しばらくしてAjaxクエリーを実行してそのタスク(洗濯)が完了したかどうかを確認します。NodeJS - 外部データベースを使用せずにユーザー名とタスク管理を管理する方法?

どのように私は(?重い重量のMySQLはPostgreSQLちょうど、配列やオブジェクトを含む/使用せずに)、このようなタスク を追跡することができます

const https = require('http'); 
const fs = require('fs'); 
const url = require('url'); 

var taskID = 0; 
var task = false; 

https.createServer((req, res) => { 
    try { 
    var query =url.parse(req.url,true).query; 
    if(query.id=='1') { // Add Task 
     res.writeHead(200); 

     task = true; 
     taskID++; 

     console.log('OK - matched: ' + 
        '1 - execute task now, please come back soon' + 
        '2 - task is not complete yet ' + 
    ); 

     function_do_task_on_end_make_task_flag_false(); 


    } else if(query.id=='2') { // Check Task status 
     res.writeHead(200); 
     if(task) { 
     res.end("busy"); 
     } else { 
     res.end("done:" + taskID); 
     } 

    } else { 
     res.writeHead(404);  
     console.log('NO - match'); 
     res.end("req " + query.id); 
    } 



    } catch(e) { 
    console.log(e); 
    } 
}).listen(8000); 

EDIT:あなたが使用することができます

// http://stackoverflow.com/questions/38070287/nodejs-how-to-manage-username-and-task-management-without-using-external-datab?noredirect=1#comment63578743_38070287 
// On server start load data from file 
var storage = {tasks: []}; 
fs.readFile('database.json', function(err, data) { 
    if(err) throw new Error(err); 
    storage = JSON.parse(data); 
}); 

// On incoming request 
if (query.id == '1') { 
    // Add task to variable storage 
    storage.tasks.push({taskId: query.id, taskName: query.name}); 
} 
else if (query.id == '2') { 
    res.json(storage); 
} 

// Update database persistent file 
fs.writeFile('database.json', JSON.stringify(storage), function (err) { 
    if (err) throw new Error('Error while serializing DB'); else console.log('DB updated!'); 
}); 
+0

すべての変更を1つの大きなJSONドキュメントにシリアル化してファイルに保存してみてください。開始時にも読み込みます。完璧な解決策ではありませんが、非常に小規模なプロジェクトのためには「十分な」ものでなければなりません。 –

+0

どういう意味ですか?あなたは例がありますか? – YumYumYum

+1

確か: 'var storage = {tasks:[]}; ... IF(query.id == '1'){ storage.tasks.push({ のtaskId:query.id、 タスク名:query.name })。 } else if(query.id == '2'){ res.json(storage); } fs.writeFile( 'database.json'、JSON.stringify(ストレージ)、関数(ERR){ (ERR) 'DBをシリアル化中にエラー' 新しいエラー(スロー)場合、他 はCONSOLE.LOG(」更新DB '); });ひどいフォーマットのため申し訳ありませんが ' –

答えて

2

データベースの代わりにメモリ。チェックアウトnode-cache

関連する問題