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



我在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);
}

有没有一种方法可以在提交places对象时将生成的名为created_at的时间戳推送到该对象?

"created_at" : "2014-07-15T01:52:33Z"

其他自动化数据呢,比如推送一个唯一的ID。

如有任何帮助,我们将不胜感激。提前感谢!

有没有一种方法可以在提交时将生成的名为created_at的时间戳推送到我的places对象

从客户端传递时间戳的另一种选择是使用Firebase的内置Firebase.ServerValue.TIMESTAMP,它被记录为:

一个占位符值,用于由Firebase服务器自动填充当前时间戳(自Unix epoch以来的时间,以毫秒为单位)。

所以你可以这样做:

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。push:的文档

使用唯一的名称生成一个新的子位置,并返回对它的Firebase引用。

Firebase保证这个ID是唯一的,特别是为了让你的应用程序不必担心它。push生成的ID采用-JXd1pbUU89Xbd4BYvx6-JZoLcBKnd1A8Gn-ZP0I等形式。

我建议您坚持使用该ID,而不是生成自己的附加ID。如果您更喜欢生成自己的ID,我会仅使用该ID并使用它来命名您的节点,而不是让push为您生成一个:

var newID = ID_GENERATE_FUNCTION();
placesRef.child(newID).set(hospital);

请注意,这里我也不将newID存储在医院对象中。

当您将医院添加到阵列中时,您可以创建两个所需的参数:

function createHospital(hospital) {
    var newHospital = angular.copy(hospital);
    newHospital.created_at = new Date();
    newHospital.ID = ID_GENERATE_FUNCTION();
    placesRef.push(newHospital);
}

最新更新