firebase更复杂的验证
我正在创建一个以firebase后端作为API的angular应用程序 人们可以在日历上预约,但两个人不能共享同一时段。此外,由于预约可以每半小时开始一次,检查变得有点复杂 我可以让firebase执行更复杂的验证吗?它几乎涵盖了我需要的所有其他东西,我不喜欢创建自定义的东西,只是因为这个特性firebase更复杂的验证,firebase,Firebase,我正在创建一个以firebase后端作为API的angular应用程序 人们可以在日历上预约,但两个人不能共享同一时段。此外,由于预约可以每半小时开始一次,检查变得有点复杂 我可以让firebase执行更复杂的验证吗?它几乎涵盖了我需要的所有其他东西,我不喜欢创建自定义的东西,只是因为这个特性 谢谢 据我所知,使用Firebase是可能的。但是,Firebase不像Mongo那样具有动态查询功能。我相信你必须采取相当原始的方法来解决这个问题,比如: db.child('calendar').on
谢谢 据我所知,使用Firebase是可能的。但是,Firebase不像Mongo那样具有动态查询功能。我相信你必须采取相当原始的方法来解决这个问题,比如:
db.child('calendar').once('value', function(snapshot){
var hours = snapshot.val();
// for each hour
// do validation here
})
如果我是对的,你说你不想做客户端检查。听起来不错。下面是我要做的: 在存储约会时,我会根据他们的时间给他们命名。客户端代码:
var dataRef = new Firebase('https://example.firebaseio.com/');
dataRef.child('2014-6-9-0500').set('name'); // 5:00 6/9/2014 converted to a string
因此,所有约会都将根据时间命名,其值将等于当时被安排的人的姓名。这将导致无法同时安排两个人(因为在Firebase中,不能有两个同名的孩子)
在安全选项卡中,检查数据是否不存在(以防止过度写入现有约会)。然后,对于验证,您可以检查约会时间,并确保它以“00”或“30”结尾,长度为12位。规则应该是这样的:
"rules": {
".read": true,
"$time": {
".write": "!data.exists()",
".validate": "$time.endsWith('00') || $time.endsWith('30')"
}
}
虽然可以接受非有效时间(例如“0000-0-0-0030”或甚至“qt00”),但提交的有效约会不会与另一个约会安排在同一时间,约会将在“:00”或“:30”(半小时间隔)结束
唯一的问题是,如果一个人从中午开始有一个小时的约会。你必须安排多个约会:一个在12:00,另一个在12:30。这可能会有点烦人,但我不知道还有什么其他方法可以做到。你试过什么吗?如果我理解得很好,您只需在Firebase中保存一个值(例如约会时间),然后在用户尝试保存时检查相同的值,就可以实现这一点。所有东西都有几行前端代码。你能提供一个到目前为止你尝试过的例子吗?这需要一本书的章节来描述所有的可能性,而不需要更多关于用例的细节。我还没有尝试过任何东西。约会存储为带有开始和完成日期的JavaScript对象。基本上是在前端,当有人试图预订某件东西时,我会确保开始或结束不在另一个约会范围内。我想在后端有一张类似的支票……我不想把支票只放在前端——这就是问题所在。你好,肖恩,谢谢你的回答!通过阅读安全API,我找不到“db”。或者。有一次,我在文档中遗漏了什么吗?另外,我想你建议将其置于“验证”下?谢谢,这听起来不错,但它仍然保留了客户端的验证,这是我想要避免的…非常感谢Timothy,我也想到了类似的事情:)