我在Angular中编写了一个表单,将表单中提交的数据发送到Firebase中名为places
的对象。
HTML
<form role="form" name="addPlaceForm" ng-submit="createHospital(newHospital)">
<input type="text" placeholder="Enter title here" ng-model="newHospital.title">
<button type="submit" class="btn btn-primary btn-lg">Submit</button>
</form>
JS
var rootRef = new Firebase('URL');
var placesRef = rootRef.child('places');
function createHospital(hospital) {
placesRef.push(hospital);
}
有没有办法在提交时将生成的时间戳created_at
推送到我的places
对象?
"created_at" : "2014-07-15T01:52:33Z"
那么其他自动化数据呢,比如推送一个唯一的ID。
任何有关此的帮助将不胜感激。提前谢谢!
答案 0 :(得分:2)
从客户端传递时间戳的另一种方法是使用Firebase的内置Firebase.ServerValue.TIMESTAMP
,其记录为:
Firebase服务器自动填充当前时间戳(自Unix纪元以来的时间,以毫秒为单位)的占位符值。
所以你可以这样做:
function createHospital(hospital) {
hospital.created_at = Firebase.ServerValue.TIMESTAMP;
placesRef.push(hospital);
}
有关详情,请参阅此帖子:https://www.firebase.com/blog/2013-06-17-howto-build-a-presence-system.html
当您调用Firebase push
方法时,已为您生成唯一ID。 documentation for push
:
使用唯一名称生成新的子位置,并向其返回Firebase引用。
此ID由Firebase保证是唯一的,特别是以便您的应用程序不必担心它。 push
生成的ID采用-JXd1pbUU89Xbd4BYvx6
,-JZoLcBKnd1A8Gn-ZP0I
等格式。
我建议坚持使用该ID,而不是生成自己的附加ID。如果您希望生成自己的ID,我只会使用该ID并使用它来命名您的节点,而不是让push
为您生成一个:
var newID = ID_GENERATE_FUNCTION();
placesRef.child(newID).set(hospital);
请注意,我也不会将新ID 存储在医院对象中。
答案 1 :(得分:1)
将医院添加到阵列时,您可以创建所需的两个参数:
function createHospital(hospital) {
var newHospital = angular.copy(hospital);
newHospital.created_at = new Date();
newHospital.ID = ID_GENERATE_FUNCTION();
placesRef.push(newHospital);
}