2015-06-23 73 views
1

我正在爲我的web應用程序創建一個註冊函數。 成功註冊後,服務器將記錄保存到數據庫,並在響應中返回和授權令牌,但是我無法從我的響應中獲得授權令牌。 這裏是我的控制寄存器行動如何從餘燼保存方法獲得JSON響應

registeruser2: function() { 
    // this.set('paneRadioClassFemale','radioActive'); 

    var self = this, 
    data = this.getProperties('useremail', 'userpassword', "userfullname", 'mm', 'dd', 'yyyy', 'usercity', 'userstate', 'userzip', 'usergender'); 
    console.log(data); 


    var registeruser = self.store.createRecord('registeruser', data); 


    registeruser.save().then(function(response){ 
    console.log(response.get('token')); 
    console.log(response.get('usertoken')); 
    //self.set('token') 
    self.transitionToRoute('userhomeselectbrand'); 
    }); 



}, 

這裏是我的Express服務器功能,持久化數據

router.post('/registerusers',function(req,res){ 

    // console.log(req.body); 
    // console.log(req.body.registeruser.useremail); 
    var currentToken = hat(); 
    var hiveuser = new Hiveuser(); 
    var dateString=req.body.registeruser.yyyy+"/"+req.body.registeruser.mm+"/"+req.body.registeruser.dd; 
    var dateOfBirth=new Date(dateString); 
    hiveuser.email = req.body.registeruser.useremail; 
    hiveuser.password = req.body.registeruser.userpassword; 
    hiveuser.fullname = req.body.registeruser.userfullname; 
    hiveuser.dateofbith=dateOfBirth; 
    hiveuser.city=req.body.registeruser.usercity; 
    hiveuser.state=req.body.registeruser.userstate; 
    hiveuser.zip=req.body.registeruser.userzip; 
    hiveuser.sex=req.body.registeruser.usergender; 
    hiveuser.registertype="hive"; 
    hiveuser.authtoken=currentToken; 
    console.log(currentToken); 

    var userEmail=req.body.registeruser.useremail; 

    Hiveuser.find({'email':userEmail},function(err,findResponse){ 


      hiveuser.save(function(err) { 
       if (err) 
        res.send(err); 
       authtoken=new AuthToken(); 
       authtoken.email=userEmail; 
       authtoken.auth_token=currentToken; 
       authtoken.created_date=new Date(); 
       authtoken.expiry_date=authtoken.created_date+160000; 

       authtoken.save(function(err1){ 
        if(err1) 
         res.send(err1); 
       }); 
       res.send({'usertoken':{'success':true,'token':currentToken}}); 
      }); 

    }); 


}); 

我只想檢索由灰燼響應返回的令牌。 我的瀏覽器控制檯日誌中的反應表明 不確定的兩種

 console.log(response.get('token')); 
     console.log(response.get('usertoken')); 

我甚至創造了usertoken灰燼模型,但是是空的承諾是fullfilled即使經過。

有趣的是,當我去到網絡選項卡在我的Chrome檢查我看到正確的預期響應,即

{"usertoken":{"success":true,"token":"20cade39a77931d8a7e9facfd10c5803"}} 

但無法獲得灰燼數據的響應。 如果我做的console.log(響應)我得到以下數據

Class {id: null, store: Class, container: Container, _changesToSync: Object, _deferredTriggers: Array[0]…}__ember1435038661483: "ember650"__ember_meta__: Object__nextSuper: undefined_attributes: Object_changesToSync: Object_data: Object_deferredTriggers: Array[0]_implicitRelationships: Object_inFlightAttributes: Object_recordArrays: ember$data$lib$system$ordered$set$$OrderedSet_relationships: Object_updatingRecordArraysLater: falsecontainer: ContainercurrentState: (...)get currentState: GETTER_FUNCTION() {set currentState: (val) {id: nullstore: ClasstoString:() {__proto__: Class 

但無處我預期的JSON,停留在這整個一天,請大家幫忙

回答

0

確定我解決它的人誰卡住在同一問題中,響應json的格式必須與請求json的格式相同,並且屬性記錄必須是正在保存的ember模型的一部分。 在我的情況下,我通過將我的響應對象更改爲res.send({'registeruser':{'usertoken':currentToken}}); 並將usertoken屬性添加到我的註冊用戶模型來解決此問題。