我正在为我的网络应用创建注册功能。 成功注册后,服务器将记录保存到db并在响应中返回和auth令牌,但是我无法从我的响应中获取身份验证令牌。 这是我在控制器中的注册操作
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 Server功能,用于保存数据
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}});
});
});
});
我只想检索Ember响应返回的令牌。 我的浏览器控制台日志显示响应
未定义 console.log(response.get('token'));
console.log(response.get('usertoken'));
我甚至为usertoken创建了一个Ember模型,但即使在承诺满了之后它也是空的。
有趣的是,当我进入Chrome检查器的“网络”标签时,我看到了正确的预期响应,即
{"usertoken":{"success":true,"token":"20cade39a77931d8a7e9facfd10c5803"}}
但无法在Ember数据中获得响应。 如果我执行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 :(得分:0)
好吧我为那些陷入同一问题的人解决了问题,响应json必须与请求json的格式相同,属性记录必须是保存的ember模型的一部分。
在我的情况下,我通过将我的响应对象更改为res.send({'registeruser':{'usertoken':currentToken}});
来解决它
并将usertoken属性添加到我的registeruser模型。