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