admin管理员组

文章数量:1279242

I am trying to pass a JSON object from pug to client side JavaScript. Here's how the code is structured. I render a JSON object and pass it to Pug from my Node-Express backend. Code below:

server.js:

app.get('/myrooms', function(req, res) {
    Room.find()
        .where('_id')
        .in(user.rooms)
        .exec(function (err, records) {
            res.render('rooms/index', {myrooms : records})
        })
})

After that this object is available in my pug file. Now I want to pass it to a client side script. I am doing something like this in my index.pug file.

index.pug:

script(src='/js/play.js').
    trooms = "#{myrooms}"

play.js:

console.log(trooms)

It gives me 'troom is not defined' error. I don't know how I can pass this object. According to some old post this was working in jade. However, I am using the pug version 2.0.0-rc.2.

I am trying to pass a JSON object from pug to client side JavaScript. Here's how the code is structured. I render a JSON object and pass it to Pug from my Node-Express backend. Code below:

server.js:

app.get('/myrooms', function(req, res) {
    Room.find()
        .where('_id')
        .in(user.rooms)
        .exec(function (err, records) {
            res.render('rooms/index', {myrooms : records})
        })
})

After that this object is available in my pug file. Now I want to pass it to a client side script. I am doing something like this in my index.pug file.

index.pug:

script(src='/js/play.js').
    trooms = "#{myrooms}"

play.js:

console.log(trooms)

It gives me 'troom is not defined' error. I don't know how I can pass this object. According to some old post this was working in jade. However, I am using the pug version 2.0.0-rc.2.

Share Improve this question edited Aug 14, 2017 at 20:29 gandreadis 3,2422 gold badges29 silver badges39 bronze badges asked Aug 11, 2017 at 22:24 ShadidShadid 4,2629 gold badges32 silver badges54 bronze badges 3
  • You have to out the trooms = "#{myrooms}" before you source the script. – lxe Commented Aug 11, 2017 at 22:28
  • Also, need to call JSON.parse('#{myrooms}') to convert JSON to object. – alexmac Commented Aug 11, 2017 at 22:36
  • 1 I have tried doing JSON.parse('#{myrooms}') that but it did not work. – Shadid Commented Aug 12, 2017 at 1:20
Add a ment  | 

1 Answer 1

Reset to default 12

You can try

var trooms = !{JSON.stringify(myrooms)}

本文标签: nodejsHow to pass a Pug JSON object to client side JavaScriptStack Overflow