对话流程:
用户:嗨,我想预订酒店。
机器人:当然。告诉我你的最小射程。
用户:110美元。
Bot:你的最大射程?
用户:180美元。Bot:我看到的是110美元、145美元、180美元的酒店。你想选哪一个?
这里,我使用firestoredb从数据库中检索范围从110$到180$的数据。
下面的代码:
const snapshot = await db.collection('hoteldetails').where('Price', '<=', maxnumber) .where('Price','>=',minnumber).get()
var result=snapshot.docs.map(doc => doc.data());
if(result.length!=0){
for(let i =0;i<result.length;i++)
{
var hotelname=result[i].HotelName;
var city=result[i].City;
var price=result[i].Price;
}
console.log("price",price);
Result:(console.log(" Result ", Result)):-从Firestore中检索记录。
result [
{
Price: 100,
Availability: 'Yes',
City: 'Mumbai',
HotelName: 'GrandHyatt'
},
{
HotelName: 'Leelaplace',
Price: 110,
City: 'Banglore',
Availability: 'Yes'
},
{
HotelName: 'OberaiHotel',
City: 'Mumbai',
Availability: 'Yes',
Price: 150
},
{
HotelName: 'Taj Hotel',
Availability: 'yes',
Price: 180,
City: 'Mumbai'
}
]
如果我在for循环后使用console.log(price),我只得到最后一条记录的价格显示-180$…
我是初学者Nodejs。如何显示上述对话流中显示的结果数组中的所有价格?
有很多方法可以达到你想要的结果。
你可以这样做:
- 你可以把
console.log("price",price);
放到for循环中。
const snapshot = await db.collection('hoteldetails').where('Price', '<=', maxnumber) .where('Price','>=',minnumber).get()
var result=snapshot.docs.map(doc => doc.data());
if(result.length!=0){
for(let i =0;i<result.length;i++)
{
var hotelname=result[i].HotelName;
var city=result[i].City;
var price=result[i].Price;
console.log("price",price);
}
上面的代码将在它所执行的每个循环上打印价格。它应该给你这样的结果:
price 100
price 110
price 150
price 180
你可以在这里测试代码.
- 可以使用数组push
const snapshot = await db.collection('hoteldetails').where('Price', '<=', maxnumber) .where('Price','>=',minnumber).get()
var result=snapshot.docs.map(doc => doc.data());
if(result.length!=0){
var prices = [];
for(let i =0;i<result.length;i++)
{
var hotelname=result[i].HotelName;
var city=result[i].City;
var price=result[i].Price;
prices.push(price);
}
//".toString()" converts array to string. You can remove ".toString()" if you want it as an array.
console.log(prices.toString());
你可以在这里测试代码。
Please check this循环和迭代关于循环的更多信息。