Angular:在提交的表单上推送生成的时间戳

时间:2014-10-29 11:51:56

标签: json angularjs firebase

我在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。

任何有关此的帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:2)

有没有办法可以在生成的时间戳名为created_at时将其提交到我的位置对象?

从客户端传递时间戳的另一种方法是使用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

其他自动数据如何推送唯一ID?

当您调用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);
}