[
{
"childKey": "o4oqRIVA3bdY33",
"childData": {
"serviceCity": "Santa Rosa",
"serviceDate": {
"2018-01-31": {
"clientId": "Y8valE4BUynL3y",
"Booked": false,
"shift": "Night"
},
"2018-02-02": {
"clientId": "Y8va12asdynL3y",
"Booked": false,
"shift": "Night"
}
},
"serviceProvince": "Laguna"
}
}
]
这是我目前的回应......
我有一个变量,用于保存ajax传递的数据。
var startDate = '2018-01-31'
如果serviceDate
匹配/具有相同的startDate
router.get('/newWatch/:uuid',function(req, res){
var avail = database.ref('availableWatch');
var startDate = req.params.uuid;
avail.once('value', function(snapshot){
var promises = [];
snapshot.forEach(function(childSnapshot){
var childData = childSnapshot.val().serviceDate;
var Datestarts = childData[startDate];
console.log(Datestarts);
});
res.json(promises)
});
});
但问题是我可以获取整个数据,但不能获取serviceDate中的数据。我不知道使用forEach是正确的做法..我想做的是获得具有serviceDate of 2018-01-31..
答案 0 :(得分:0)
你错过了这个:childSnapshot.childData.serviceDate
。
这应该适合你:
snapshot.forEach(function(childSnapshot){
var childData = childSnapshot.childData.serviceDate;
var Datestarts = childData[startDate];
console.log(Datestarts);
});
答案 1 :(得分:0)
我从你的问题中了解到,只有当startDate与serviceDate中的某个日期匹配时,你才想执行AJAX。
您可以使用Object.keys()
从响应中获取serviceDate的密钥,并相应地继续执行代码。
var response=[
{
"childKey": "o4oqRIVA3bdY33",
"childData": {
"serviceCity": "Santa Rosa",
"serviceDate": {
"2018-01-31": {
"clientId": "Y8valE4BUynL3y",
"Booked": false,
"shift": "Night"
},
"2018-02-02": {
"clientId": "Y8va12asdynL3y",
"Booked": false,
"shift": "Night"
}
},
"serviceProvince": "Laguna"
}
}
]
然后
var serviceDateData = Object.keys(response [0] .childData.serviceDate);
serviceDateData
将包含["2018-01-31", "2018-02-02"]
现在您可以使用逻辑来实现所需的功能。 希望它能帮到你
答案 2 :(得分:0)
尝试以下
router.get('/newWatch/:uuid',function(req, res){
var avail = database.ref('availableWatch');
var startDate = req.params.uuid;
avail.once('value', function(snapshot){
var promises = [];
snapshot.forEach(function(childSnapshot){
promises.push(childSnapshot.childData.serviceDate[startDate]);
});
res.json(promises)
});
});