如何正确使用Parse.query.equalTo

How to properly use Parse.query.equalTo?

本文关键字:query equalTo Parse 何正确      更新时间:2023-09-26

在我的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 })

我不确定,但尝试将File user字段设置为对象id而不是用户对象本身。解析对象有时会返回一个指针,有时返回id,等等。因此,当您将字段设置为Parse.User.current()时,可能会出现意想不到的行为。除此之外,你看起来正确地使用了equalTo。

否则,基本上调试云代码的唯一方法是console.log并查看日志。

作为旁注,您应该在保存每个文件之前设置ACL…这样,用户无论如何都无法查看其他用户的文件(除非这些文件是公开的)。