在我的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/

10-08 20:44