2014-08-29 10 views
6

Quando utilizzo questa funzione nel codice Parse.User.current(), restituisce null.
Sto usando parseExpressCookieSession per il login.
Qualche consiglio?Codice cloud Parse.User.current() restituisce null

var express = require('express'); 
var expressLayouts = require('cloud/express-layouts'); 
var parseExpressHttpsRedirect = require('parse-express-https-redirect'); 
var parseExpressCookieSession = require('parse-express-cookie-session'); 

// Required for initializing enter code hereExpress app in Cloud Code. 
var app = express(); 

// Global app configuration section 
app.set('views', 'cloud/views'); 
app.set('view engine', 'ejs'); // Switch to Jade by replacing ejs with jade here. 
app.use(expressLayouts);   // Use the layout engine for express 
app.set('layout', 'layout'); 
app.use(parseExpressHttpsRedirect()); // Require user to be on HTTPS. 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(express.cookieParser('helloworld')); 
app.use(parseExpressCookieSession({ 
    fetchUser: true, 
    cookie: { maxAge: 3600000 * 24 } 
}));  

Parse.Cloud.beforeSave('Menu', function(request, response) { 
    var Business = Parse.Object.extend('Business'); 
    var query = new Parse.Query(Business); 

    query.equalTo('profile', Parse.User.current().get('profile')); 
    query.find({ 
     success: function(business) { 
      console.log(business); 
      response.success(); 
     }, 
     error: function(error) { 
      response.error(error.message); 
     } 
    }); 
    }); 

    app.listen(); 

Questo il codice che uso per login/logout

app.post('/login', function(req, res) { 
    Parse.User.logIn(req.body.username, req.body.password).then(function(user) { 
    // Login succeeded, redirect to homepage. 
    // parseExpressCookieSession will automatically set cookie. 
    res.redirect('/'); 
    }, 
    function(error) { 
    // Login failed, redirect back to login form. 
    res.redirect('/'); 
    }); 
}); 

// Logs out the user 
app.post('/logout', function(req, res) { 
    Parse.User.logOut(); 
    res.redirect('/'); 
}); 

risposta

8

Si tratta di una vecchia questione, ma di rispondere per riferimento futuro.

Parse.User.current() funziona in SDK Javascript se utilizzato nei client ex. WebApp in cui gli utenti eseguono l'accesso e puoi recuperare l'utente corrente con quella funzione.

Per ottenere l'utente chiamante un Codice cloud funzione di o fare un'operazione su un oggetto (BeforeSave, AfterSave, BeforeDelete e così via) si utilizza la proprietàrequest.user contiene la utente che ha inviato la richiesta a Parse.com.

Maggiori informazioni su Parse.Cloud.FunctionRequest qui: https://parse.com/docs/js/api/classes/Parse.Cloud.FunctionRequest.html

codice di esempio:

Parse.Cloud.beforeSave('Menu', function(request, response) { 
    var requestUser = request.user; 
    // instance of Parse.User object of the user calling .save() on an object of class "Menu" 

    // code cut for brevity 
}); 
+0

Il collegamento non funziona più, e non v'è alcuna documentazione su parseExpressCookieSession da nessuna parte che posso trovare. –

+0

Il collegamento è stato aggiornato perché Parse ha cambiato l'URL per la loro documentazione. Per quanto riguarda la specifica parseExpressCookieSession, dovrai contattare il poster della domanda originale. Stavo solo rispondendo alla differenza tra gli utenti di analisi utilizzati in CloudCode e in Parse JS SDK. – zagu

+0

Grazie a zagu - randy –

Problemi correlati