在我的Web应用程序中,当用户登录时,他们应该看到他们制作的所有文档。但是,当我测试我的应用程序时,我会看到所有文档,包括我没有制作的文档。我相信这是因为我没有正确使用Parse.query.equalTo。
这是我的代码:
router.post('/login', function (req, res) {
var tempname = req.body.username;
var username = tempname.toLowerCase();
var password = req.body.password;
var login = Promise.promisify(Parse.User.logIn);
var promerror = Promise.reject("error");
var Files = Parse.Object.extend("File");
var query = new Parse.Query(Files);
query.include('user');
var finds = query.find;
var doc = {};
var name, url;
return login(username, password).catch(function (error) {
}).then(function (user, error) {
query.equalTo("user", Parse.User.current());
console.log(JSON.stringify(Parse.User.current()));
if (user) {
res.render('logins', { Message: "Username and/or password don't match" });
}
var temp;
}).catch(function (err) {
res.render('logins');
}).then(query.find(function (results) {
for (var i = 0; i < results.length; i++) {
var object = results[i];
var userID = object.get('user');
console.log("current user");
var codefile = object.get('javaFile');
temp = codefile.name();
name = temp.split("-").pop();
url = codefile.url();
doc[name] = url;
}
})).catch(function (error) {
promerror(error);
}).finally(function () {
res.render('filename', { title: 'File Name', FIles: JSON.stringify(doc) });
}).done();
});
当用户登录时,它应该去数据库检索用户创建的所有文档,并将其保存到
doc
,然后将doc
发送到客户端进行显示。这是用户保存文件的代码:
newFile.save({ user: Parse.User.current(), fileName: newnames, javaFile: parseFile })
最佳答案
我不确定,但是尝试将“文件”用户字段设置为对象ID,而不是用户对象本身。解析对象有时会返回指针,有时会返回id等。因此,在将字段设置为Parse.User.current()
时,您可能会遇到意外的行为。除此之外,您看起来正在正确使用equalTo。
否则,基本上调试云代码的唯一方法是console.log并查看日志。
附带说明,应在保存每个文件之前设置每个文件的ACL ...那样,一个用户无论如何都将无法查看其他用户的文件(除非这些文件是公开的)。
关于javascript - 如何正确使用Parse.query.equalTo?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30717909/