如何使用nodejs访问for循环外部的变量值并在dialogflow中显示给用户



对话流程:

用户:嗨,我想预订酒店。
机器人:当然。告诉我你的最小射程。
用户: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。如何显示上述对话流中显示的结果数组中的所有价格?

有很多方法可以达到你想要的结果。

你可以这样做:

  1. 你可以把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

你可以在这里测试代码.

  1. 可以使用数组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循环和迭代关于循环的更多信息。

相关内容

  • 没有找到相关文章

最新更新