- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要处理当我的数据库没有 equalTo() 的任何匹配结果时的情况。目前,下面的代码仅在我有匹配项时才返回,如果没有匹配项,则根本不返回。请告知如何处理?
function getActivitySurvey(pin) {
return new Promise((resolve, reject) => {
var ref = admin.database().ref("activity-survey");
ref.orderByChild("pin").equalTo(pin.toString()).once('child_added')
.then((snapshot) => {
if (snapshot) {
resolve(snapshot);
} else {
reject(new Error('No ActivitySurvey'));
}
}).catch( () => {
reject(new Error('No snapshot'));
})
})
}
编辑:此后,我将代码修改为如下所示,如果指定了数据库中不存在的 pin 值,则输出到控制台的唯一行是“getActivitySurvey”,该函数最终会超时但不会超时返回:
function getActivitySurvey(pin) {
return new Promise((resolve, reject) => {
console.log('getActivitySurvey')
var ref = admin.database().ref("activity-survey");
ref.orderByChild("pin").equalTo(pin.toString()).once('child_added').then((snapshot) => {
console.log('have snapshot')
if (snapshot.exists()) {
resolve(snapshot);
} else {
console.log('Rejecting ActivitySurvey')
reject('error');
}
}).catch( (err) => {
console.log('Caught error')
reject('err');
})
})
}
最佳答案
仅使用 child_added
监听器无法检测子项是否存在。您需要为此使用 value
监听器。
例如:
ref.orderByChild("pin").equalTo(pin.toString())
.once('child_added')
.then((snapshot) => {
resolve(snapshot);
});
ref.orderByChild("pin").equalTo(pin.toString()).limitToFirst(1)
.once('value')
.then((snapshot) => {
if (!snapshot.exists()) {
reject(new Error('No ActivitySurvey'));
}
});
或者只有一个查询:
ref.orderByChild("pin").equalTo(pin.toString()).limitToFirst(1)
.once('value')
.then((snapshot) => {
if (snapshot.exists()) {
snapshot.forEach(function(child) { // will loop only once, since we use limitToFirst(1)
resolve(child);
});
}
else {
reject(new Error('No ActivitySurvey'));
}
});
关于javascript - 从 Firebase Cloud Function 中的 equalTo 返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533515/
当我尝试在 Google 上搜索此错误时,我什么也没找到:“ Uncaught Error :Query.equalTo:之前调用过 startAt() 或 equalTo()!”。 (一个没有说明什
当我试图通过电子邮件或电话号码查找记录时,我一直在使用下面的两个代码,有时第一个代码工作正常有时不起作用,第二个代码也一样。 下面的代码和什么时候应该使用“equalTo”或“startAt and
这是我目前用来尝试验证表单的方法。当我在表单中未输入任何值的情况下按“提交”时,我会按预期收到每个输入的错误消息。但是,无论我在 newpassword2 或 newemail2 中输入什么,它们都不
在我的网络应用程序中,当用户登录时,他们应该看到他们制作的所有文档。然而,当我测试我的申请时,我看到了所有文件,包括我没有制作的文件。我相信这是因为我没有正确使用 Parse.query.equalT
我想使用 validate.js 验证我的表单并匹配密码。我编写了以下代码: $(document).ready(function () { $("#signup-form").validat
我在使用 Firebase 时遇到问题;我正在尝试用 javascript 检索我的所有帖子,这些帖子以正确的语言“发布”并按发布日期排序。 我的 Firebase 数据库是这样的: { posts:
我有以下 PHPUnit 测试用例: $mailer = $this->getMockBuilder(MailerInterface::class)->getMock(); $simp
我正在使用简单模式打开注册表单。我正在尝试验证密码并确认密码,但密码字段始终为空,有什么想法吗? var validator = $("#registrationForm").vali
使用 jquery 验证插件,我使用规则 equalTo 来验证字段,如下所示: $('#booking').validate({ ignoreTitle: true, rules: { pa
我的查询应该搜索解析类并返回所有 PFObject(如果它们包含标签数组中的字符串)。没有 whereKey: equalTo: 代码可以工作并且所有对象都会显示,但没有它则什么也不显示。 impor
当我在没有任何查询的情况下从数据库中获取所有数据时,我从数据库中获取了最后的条目(生成的键就是以这种方式工作的)。像这样: var ref = firebase.database().ref('myO
我在 firebase 中的数据如下所示。 items { item1: { field1: value1 field2: value2 } item2: {
我在 PHPUnit 中遇到问题,我想在比较日期时在 equalTo 方法中使用 delta 参数。假设我想将相差不超过 10 秒的日期视为相等的日期。 $some_delta 的适当值是多少? 10
我正在使用以下代码使用放心库进行服务调用,您能帮我解决构建问题吗?查找函数 "equalTo" 来验证响应数据时出现问题。 请参阅下面的错误: 这是我的代码: @Test public void te
我正在使用此查询来验证我的 Firebase 上是否存在数据(使用 AngularFire2) let aux = this.afData.list("/drivers", { query: { or
我正在使用jQuery Validate plugin在我的 Grails 应用程序中,以下是来自 GSP 的验证代码: $(document).ready(function() {
我正在尝试更改列表中的某些项目 - 不是所有项目,因为这是一个巨大的列表,可以由很多人修改。 const ref = firebase.database() .
我正在做一个非常简单的验证,检查两个字段是否相等。不幸的是,它似乎不起作用(当它应该返回 true 时返回 false)。 这是 jQuery(#profSet 是主要形式):
$('#reg_form').validate({ onkeyup: false, errorClass: 'error',
var data = [ { Id: 1, key: 'text', text: 'Hide', language: 'write', translation: 'q
我是一名优秀的程序员,十分优秀!