javascript - Parse does not show all my file once I add a new file -


my web application allows users create , view files have created. when user logs in can see files created, when users creates new file, , clicks view files, newly created file not there.

here code saving file in parse:

router.post('/newfile', function(req, res) {   var usercode = req.body.code;   console.log(usercode);   newname = req.body.name;   console.log(newname);   var bytes = [];   var doc = {};   (var = 0; < usercode.length; i++) {       bytes.push(usercode.charcodeat(i));   };   console.log("passed byetes");   var parsefile = new parse.file(newname, bytes);   parsefile.save();   var fileclass = parse.object.extend("file");   var newfile = new fileclass();   newfile.save({       user: parse.user.current(),       filename: newname,       javafile: parsefile   });   var newfileclass = parse.object.extend("file");   var query = new parse.query(newfileclass);   query.find(function(results) {       (var = 0; < results.length; i++) {           var object = results[i];           var codefile = object.get('javafile');           temp = codefile.name();           name = temp.split("-").pop();           url = codefile.url();           doc[name] = url;       }   }).then(function() {       console.log("inside then(function()");       console.log(doc);       res.json({           files: json.stringify(doc)       });   }); }); 

so once new file saved, parse.query.find files again. when program comes line console.log(doc) should print files including new one, prints old files. once log out , log in new file there. how fix such after user saves new file appears along other files?

save() runs asynchronously, of code after save() runs before it, before query able show new . restructure this:

save().then(function () {     // follows save() here     var fileclass = parse.object.extend("file");     // etc. }); 

edit - better code formatting in edit revealed there several asynch functions being attempted, use promises keep them straight...

router.post('/newfile', function(req, res) {   var usercode = req.body.code;   console.log(usercode);   newname = req.body.name;   console.log(newname);   var bytes = [];   var doc = {};   (var = 0; < usercode.length; i++) {       bytes.push(usercode.charcodeat(i));   };   console.log("passed byetes");   var parsefile = new parse.file(newname, bytes);   parsefile.save();   var fileclass = parse.object.extend("file");   var newfile = new fileclass();   newfile.save().then(function () {       user: parse.user.current(),       filename: newname,       javafile: parsefile        var newfileclass = parse.object.extend("file");       var query = new parse.query(newfileclass);       return query.find();   }).then(function(results) {       (var = 0; < results.length; i++) {           var object = results[i];           var codefile = object.get('javafile');           temp = codefile.name();           name = temp.split("-").pop();           url = codefile.url();           doc[name] = url;       }       console.log("inside then(function()");       console.log(doc);       res.json({           files: json.stringify(doc)       });   }); }); 

i find little tough on eyes. can't sure didn't inadvertently code in syntax error you. better restructure divide big function several promise-returning smaller ones, named promise do.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -