Hello
It is possible that even use var to define the variable, may exist a
bug and take
it as a global and have several requests resulting into failure?
I've also changed this part of the code being as follows:
app.get('/brand/:identifier', function(req, res){
//var identifier = req.params.identifier.toLowerCase();
var term = req.params.identifier.toLowerCase();
brands.find({ active: true, 'brandName' : { $regex : new RegExp(term,
"i")} }).populate({
path: 'shop'
,select: 'name shop description'
}).sort({dateAdded: 'desc'}).exec(function(err,
mongoProducts) {
if(mongoProducts && mongoProducts.length) {
console.log('Data doc: ' + mongoProducts);
return res.render('brand_list', {
shop:
mongoProducts[0].shop.shop
,name: mongoProducts[0].
shop.name
,description:
mongoProducts[0].shop.description
,products: mongoProducts
,pageTitle:
mongoProducts[0].shop.shop
,pageUrl: '
http://backofficeserver.local/brand/' + term
});
} else {
return res.render('brand_list', {
shop:
mongoProducts[0].shop.shop
,name: mongoProducts[0].
shop.name
,description:
mongoProducts[0].shop.description
,error: 'Not product´s
found'
,pageTitle:
mongoProducts[0].shop.shop
,pageUrl: '
http://backofficeserver.local/brand/' + term
});
}
});
});
- Jade (resumed)
if error
h4= error
else
h4= 'List of products'
if products
each product in products
li.product(id=product.identifier, name=product.identifier)
a(href='/show/' + product.identifier, target='_blank')
I'll see if it works and the result I will comment. Thanks
Regards
Anto
2014/1/29 Anto <[email protected]>
> hello Ryan
>
> If I use var to declare variables, was in the transcript of this message I
> delete it by mistake, by eliminating several console.log for you they had
> the cleanest code. I´m sorry.
>
> Thanks !
>
> Regards
> Anto
>
>
> 2014/1/29 Ryan Schmidt <[email protected]>
>
>>
>> On Jan 28, 2014, at 19:39, Anto <[email protected]> wrote:
>>
>> > The code is as follows:
>> >
>> > - Nodejs + Expressjs
>> >
>> > app.get('/brand/:identifier', function(req, res){
>> >
>> > identifier = req.params.identifier.toLowerCase();
>>
>> Because you have not used "var" to declare it, "identifier" is a global
>> variable. This is a problem. Check your other code for this problem as well.
>>
>> > brands.find({ active: true, 'brandName' : { $regex : new
>> RegExp(identifier, "i")} }).populate({
>> >
>> path: 'shop'
>> >
>> ,select: 'name shop description'
>> >
>> }).sort({dateAdded: 'desc'}).exec(function(err,
>> doc) {
>>
>> Here, you are firing off an asynchronous function (brands.find); when it
>> is done, the anonymous function (function(err, doc){...}) will be called
>> with the result.
>>
>> > if(doc && doc.length) {
>> >
>> > console.log('Data doc: ' + doc);
>> >
>> > return res.render('brand_list', {
>> > shop: doc[0].shop.shop
>> > ,name: doc[0].shop.name
>> > ,description:
>> doc[0].shop.description
>> > ,products: doc
>> > ,pageTitle:
>> doc[0].shop.shop
>> > ,pageUrl: '
>> http://backofficeserver.local/brand/' + identifier
>> > });
>> >
>> > } else {
>> >
>> > return res.render('listado_shop', {
>> > shop: doc[0].shop.shop
>> > ,name: doc[0].shop.name
>> > ,description:
>> doc[0].shop.description
>> > ,error: 'Not product´s
>> found'
>> > ,pageTitle:
>> doc[0].shop.shop
>> > ,pageUrl:
>> 'http://backofficeserver.local/brand/' + identifier
>> > });
>> >
>> > }
>>
>> Here you are rendering the jade template, using various values, including
>> that global variable "identifier". But between the time that this request
>> started, and the time that the database returned the result and the
>> template was rendered, another request may have started and overwritten the
>> "identifier" variable with a different value.
>>
>> Use "var" to declare your local variables so that they stay local and
>> don't pollute other requests.
>>
>>
>> --
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines:
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>> ---
>> You received this message because you are subscribed to a topic in the
>> Google Groups "nodejs" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/nodejs/2SxmvchhHaM/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.