sql >> Databáze >  >> NoSQL >> MongoDB

Chyba Express/Node.js:Reference Error:Res není definováno

  1. App.render můžete volat na kořenové úrovni a res.render pouze v rámci trasy/middleware.
  2. app.render vždy vrací html ve funkci zpětného volání, zatímco res.render provede to pouze tehdy, když jste jako třetí parametr zadali funkci zpětného volání. Pokud zavoláte res.render bez třetího parametru/funkce zpětného volání je vykreslený html odeslán klientovi se stavovým kódem 200.

Podívejte se na následující příklady.

app.render

app.render('index', {title: 'res vs app render'}, function(err, html) {
    console.log(html)
});

res.render bez třetího parametru

app.get('/render', function(req, res) {
    res.render('index', {title: 'res vs app render'})
})

res.render se třetím parametrem

app.get('/render', function(req, res) {
    res.render('index', {title: 'res vs app render'}, function(err, html) {
        console.log(html);
        res.send('done');
    })
})
  1. res.render používá app.render interně k vykreslení souborů šablon.
  2. can't set headers znamená, že se nemůžete dostat do těla.
  3. res.render() funkce zkompiluje vaši šablonu (nepoužívejte prosím ejs), vloží tam locals a vytvoří html výstup z těchto dvou věcí.

// zde nastavíte, aby se všechny šablony nacházely v /views adresář

app.set('views', __dirname + '/views');

// here you set that you're using `ejs` template engine, and the
// default extension is `ejs`
app.set('view engine', 'ejs');

// here you render `local` template
response.render("local", {local: local_json});

Cesta šablony je tedy views/ (první část) + local (druhá část) + .ejs (třetí část) ===views/local.ejs



  1. A operátor mongoosastic (filtr)

  2. Redis ukládací seznam uvnitř hash

  3. Prototyp Mongoose:jak dynamicky vložit adresu URL?

  4. Laravel Caching s Redis je velmi pomalý