Stack Overflow Asked on January 5, 2022
I´m trying to generate a pseudo XML with car brands and models. but I´m getting an error in
ReferenceError: models is not defined. is that because is a promise? what´s the correct way to do this? thank you
const output = () => {
const id = 1
brand(id)
.then((brand) => {
const models = models(brand.id)
let xml = '<brand>';
models.map((model) => {
xml += '<brand>' + model.name + '</brand>';
});
xml += '</brand>';
return response.send(xml);
})
});
const brand = (id) => {
return database
.collection("brands")
.doc(id)
.get();
};
const models = (brandId) => {
return database
.collection("brands")
.doc(brandId)
.collection("models")
.get();
};
You need to also resolve the models promise. I'd also rename your methods to avoid conflicting names. See example:
const output = () => {
const id = 1
getBrand(id)
.then((brand) => {
return getModels(brand.id)
.then(modules => {
let xml = '<brand>';
models.map((model) => {
xml += '<brand>' + model.name + '</brand>';
});
xml += '</brand>';
return response.send(xml);
});
})
});
const getBrand = (id) => {
return database
.collection("brands")
.doc(id)
.get();
};
const getModels = (brandId) => {
return database
.collection("brands")
.doc(brandId)
.collection("models")
.get();
};
Answered by Soc on January 5, 2022
There are a couple of issues.
First, you are using models
before it's defined, which will cause a problem.
Second, models is indeed a promise, so you can't assign it to a variable directly.
I suggest using async/await
for this:
const brand = (id) => {
return database
.collection("brands")
.doc(id)
.get();
};
const models = (brandId) => {
return database
.collection("brands")
.doc(brandId)
.collection("models")
.get();
};
const output = async () => {
const id = 1
const brand = await brand(id);
const models = await models(brand.id)
let xml = '<brand>';
models.map((model) => { xml += '<brand>' + model.name + '</brand>'; });
xml += '</brand>';
return response.send(xml);
});
Also, response is not defined here, but I'm guessing you have it somewhere else. Otherwise this too will fail
Answered by BravoZulu on January 5, 2022
Ciao, you should call .then
also for models
like:
const output = () => {
const id = 1
brand(id)
.then((brand) => {
models(brand.id)
.then((models) => {
let xml = '<brand>';
models.map((model) => {
xml += '<brand>' + model.name + '</brand>';
});
xml += '</brand>';
return response.send(xml);
})
})
});
Answered by Giovanni Esposito on January 5, 2022
1 Asked on November 22, 2021 by fabrizio
2 Asked on November 22, 2021 by xxhxx
5 Asked on November 22, 2021 by hardik-kamdar
2 Asked on November 22, 2021
2 Asked on November 22, 2021 by oumayma-hamdi
1 Asked on November 22, 2021 by joel-hoelting
1 Asked on November 22, 2021 by michael-f
1 Asked on November 22, 2021 by mvn-2047
1 Asked on November 22, 2021 by vance-tunnicliffe
1 Asked on November 22, 2021 by botanist20
1 Asked on November 22, 2021 by aleix
0 Asked on November 22, 2021 by branko-simovic
0 Asked on November 22, 2021 by jonah-rimsy
dart flutter flutter dependencies flutter layout flutter test
0 Asked on November 22, 2021 by asis
1 Asked on November 22, 2021 by s_k
2 Asked on November 22, 2021 by liqteq-developer
Get help from others!
Recent Questions
Recent Answers
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP