使用 simpleLogin 将日期输入数据保存到 Firebase 的正确方法
Proper way to save date input data to Firebase with simpleLogin
我是 firebase 的新手,我正在尝试将出生日期字段添加到表单并将其保存到 Firebase。
表单中的输入字段如下所示:
<label for="birthdate">Date of Birth</label>
<input type="date" id="birthdate" name="birthdate"
ng-model="user.birthdate" ng-required="true" placeholder="Last Name">
<p class="error validationerror"
ng-show="myform.birthdate.$invalid && myform.birthdate.$touched">
Birthdate is required</p>
按照 lynda.com 教程,创建了一个工作寄存器函数,如下所示:
register : function(user) {
return simpleLogin.$createUser(user.email, user.password)
.then(function(regUser){
var ref = new Firebase(FIREBASE_URL + 'users');
var firebaseUsers = $firebase(ref);
var userInfo = {
date: Firebase.ServerValue.TIMESTAMP,
regUser: regUser.uid,
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
firebaseUsers.$set(regUser.uid, userInfo);
}); //add user
}, //register
我试图简单地在电子邮件后添加另一个 birthdate: user.birthdate
key:value 对:user.email 但那没有用。
register : function(user) {
return simpleLogin.$createUser(user.email, user.password)
.then(function(regUser){
var ref = new Firebase(FIREBASE_URL + 'users');
var firebaseUsers = $firebase(ref);
var userInfo = {
date: Firebase.ServerValue.TIMESTAMP,
regUser: regUser.uid,
firstname: user.firstname,
lastname: user.lastname,
email: user.email,
birthdate: user.birthdate
}
firebaseUsers.$set(regUser.uid, userInfo);
}); //add user
}, //register
不会为生日添加任何内容到 firebase。
如果我在 var userInfo 之后立即执行 console.log("user.birthdate: "+ user.birthdate);
我可以看到在日期选择器中选择的日期...所以我知道它是从表单中获取的进入那个寄存器函数。
我猜 simpleLogin 只能有名字、姓氏和电子邮件?
一些有用的注释:
- Firebase Simple Login 已被 Firebase 弃用,以支持每个 Firebase 客户端库中内置的本机身份验证方法。也就是说,它会继续工作。
- Firebase 简单登录和本机 Firebase 身份验证都只是委托身份验证服务。也就是说,它们仅存储凭据以使您的应用程序中的身份验证更容易,但它们不存储任意用户数据。你的 Firebase 是最好的选择。
- 在上面的示例中,写入
new Firebase(.../users
) 是写入 Firebase,而不是身份验证服务,您可以在那里写入您选择的任意数据。 但是,请检查您输入的生日类型。 Firebase 叶子值可以是 string
、number
、boolean
或 null
类型 - 但您的日期选择器可能会返回一个 Object
恰好 toString()
正确。
我是 firebase 的新手,我正在尝试将出生日期字段添加到表单并将其保存到 Firebase。
表单中的输入字段如下所示:
<label for="birthdate">Date of Birth</label>
<input type="date" id="birthdate" name="birthdate"
ng-model="user.birthdate" ng-required="true" placeholder="Last Name">
<p class="error validationerror"
ng-show="myform.birthdate.$invalid && myform.birthdate.$touched">
Birthdate is required</p>
按照 lynda.com 教程,创建了一个工作寄存器函数,如下所示:
register : function(user) {
return simpleLogin.$createUser(user.email, user.password)
.then(function(regUser){
var ref = new Firebase(FIREBASE_URL + 'users');
var firebaseUsers = $firebase(ref);
var userInfo = {
date: Firebase.ServerValue.TIMESTAMP,
regUser: regUser.uid,
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
firebaseUsers.$set(regUser.uid, userInfo);
}); //add user
}, //register
我试图简单地在电子邮件后添加另一个 birthdate: user.birthdate
key:value 对:user.email 但那没有用。
register : function(user) {
return simpleLogin.$createUser(user.email, user.password)
.then(function(regUser){
var ref = new Firebase(FIREBASE_URL + 'users');
var firebaseUsers = $firebase(ref);
var userInfo = {
date: Firebase.ServerValue.TIMESTAMP,
regUser: regUser.uid,
firstname: user.firstname,
lastname: user.lastname,
email: user.email,
birthdate: user.birthdate
}
firebaseUsers.$set(regUser.uid, userInfo);
}); //add user
}, //register
不会为生日添加任何内容到 firebase。
如果我在 var userInfo 之后立即执行 console.log("user.birthdate: "+ user.birthdate);
我可以看到在日期选择器中选择的日期...所以我知道它是从表单中获取的进入那个寄存器函数。
我猜 simpleLogin 只能有名字、姓氏和电子邮件?
一些有用的注释:
- Firebase Simple Login 已被 Firebase 弃用,以支持每个 Firebase 客户端库中内置的本机身份验证方法。也就是说,它会继续工作。
- Firebase 简单登录和本机 Firebase 身份验证都只是委托身份验证服务。也就是说,它们仅存储凭据以使您的应用程序中的身份验证更容易,但它们不存储任意用户数据。你的 Firebase 是最好的选择。
- 在上面的示例中,写入
new Firebase(.../users
) 是写入 Firebase,而不是身份验证服务,您可以在那里写入您选择的任意数据。 但是,请检查您输入的生日类型。 Firebase 叶子值可以是string
、number
、boolean
或null
类型 - 但您的日期选择器可能会返回一个Object
恰好toString()
正确。