Javascript 添加新文件后,解析不会显示所有文件
我的web应用程序允许用户创建和查看他们创建的文件。当用户登录时,他们可以看到他们创建的所有文件,但是当用户创建一个新文件,然后单击以查看所有文件时,新创建的文件不在那里 以下是我在parse中保存文件的代码:Javascript 添加新文件后,解析不会显示所有文件,javascript,node.js,parse-platform,Javascript,Node.js,Parse Platform,我的web应用程序允许用户创建和查看他们创建的文件。当用户登录时,他们可以看到他们创建的所有文件,但是当用户创建一个新文件,然后单击以查看所有文件时,新创建的文件不在那里 以下是我在parse中保存文件的代码: router.post('/newfile', function(req, res) { var usercode = req.body.code; console.log(usercode); newname = req.body.name; console.log(n
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 = {};
for (var i = 0; i < 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) {
for (var i = 0; i < 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)
});
});
});
router.post('/newfile',函数(req,res){
var usercode=req.body.code;
console.log(用户代码);
newname=req.body.name;
console.log(newname);
var字节=[];
var doc={};
对于(var i=0;i
因此,保存新文件后,我会执行parse.query.find
再次获取所有文件它应该打印包括新文件在内的所有文件,但它只打印旧文件。但是,一旦我注销并重新登录,新文件就存在了。如何解决这一问题,以便用户保存新文件后,新文件与其他文件一起显示?save()异步运行,因此save()之后所有代码都会同步运行在查询能够向您显示任何新内容之前运行。按如下方式重新构造:
save().then(function () {
// everything that follows your save() here
var FileClass = Parse.Object.extend("File");
// etc.
});
编辑-更好的代码格式在您的编辑显示,有几个异步函数正在尝试,使用承诺,以保持他们的直线
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 = {};
for (var i = 0; i < 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) {
for (var i = 0; i < 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)
});
});
});
router.post('/newfile',函数(req,res){
var usercode=req.body.code;
console.log(用户代码);
newname=req.body.name;
console.log(newname);
var字节=[];
var doc={};
对于(var i=0;i
我觉得这对我的眼睛来说都有点困难。我不能确定我不是无意中为你编写了一个语法错误。更好的重构方法是将这个大函数分成几个承诺返回的小函数,根据它们的承诺来命名。谢谢,真的很欣赏格式。所以我修复了它,它的工作方式是h但是我似乎无法将
doc
发送到客户端。我已经尝试了res.send()和res.json。如果您使用console logjson.stringify(doc)
它看起来正常吗?是的,如果我使用console.log(json.stringify(doc))我得到了正确的东西。这意味着我创建的新文件很好,所以文件被保存了,这就是这个问题。在客户端上看不到它肯定与客户端有关。你是如何提出请求的?换句话说,如果你只是响应res.json({“foo”:“bar”});
你能在客户机上看到吗?