I'd really suggest to use jade with "self" option, this way you won't get confused where these variables are coming from.
 
 
03.02.2014, 14:51, "Anto" <[email protected]>:
Hi
 
Already solved.
 
This has been fixed by changing the name of the variable in Jade. Know if Jade uses local, global variables or is a bug. I understand that to be a template should be local but it seems that using global variables.
 
It's very strange, because if so, to enter another section, this variable would refresh and would show other values, but once caused the fault always showing the same data, a mixture of various data.
 
# Nodej
 
,listProducts: mongoProducts 
 
# Jade
each product in listProducts
 
Thanks !
 
Regards
Anto


2014-01-29 Anto <[email protected]>
Hi
 
node-inspector died and not on the browser. If you run hard and routines as planned, but I could not see the products object with failure.
 
Regars


2014-01-29 Anto <[email protected]>

Yourselves know her some _javascript_ parser? Because I'm debugger and breadpoints jump on the rest of GET but not in this and I think there's some bad code above or something. And I see it in 6k lines ...
 
Thanks
 
Regards
Anto


2014-01-29 Angel Java Lopez <[email protected]>

Can you show:
 
- the retrieved document
- the jade ouput (relevant HTML from your browser source)
 
Can you add something "definitive" to Jade, template, like p= new Date() (I don't know if it is a valid Jade syntax). That is, a _javascript_ _expression_ returning the current date/time, not in the model, but in the view
 
In this way, you will be more info about the result. It's not clear (in my English understanding) if you have "cached" result (the same result that one hour or one minute, or one second ago), or "mangled" (the result is not what you expected but make senses, or the result is garbage, not expected, non sense).
 
Angel "Java" Lopez
@ajlopez
 
 
 
 
 


On Wed, Jan 29, 2014 at 7:39 AM, Anto <[email protected]> wrote:
Hello
 
It has failed again despite all this, the variables have the right data but once fault does not display properly. It's like jade take the cached data from another object ( -> products: mongoProducts). Thanks
 
Regards
Anto


2014/1/29 Anto <[email protected]>
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='' + 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].

 

--
--
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.

--
--
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.

Reply via email to