node.js EJS - Do Datei nicht machen, wenn es nicht vorhanden ist

stimmen
2

Ich habe einen Blick auf Ordnerstruktur und eine ejs Datei profile_60113.ejs wie diese

views
    docs
        profile_60113.ejs

Ich kann dynamisch die Datei wie folgt (wobei data.groupID == 60113) machen:

<%- include(docs/profile_ + data.groupID); %>

Aber wie kann ich überprüfen Sie zuerst, ob die Datei vorhanden ist? Ich habe versucht, dies:

<% if (fs.existsSync(views/docs/profile_ + data.groupID)) { %>
    <%- include(docs/profile_ + data.groupID); %>
<% } %>

Oder ...

<% if (fs.existsSync(docs/profile_ + data.groupID)) { %>
    <%- include(docs/profile_ + data.groupID); %>
<% } %>

Aber hat nicht funktioniert ... const fs = require ( 'fs') in der Steuerung und fs enthalten: fs gemacht wird

Veröffentlicht am 13/02/2020 um 21:54
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Was funktioniert, ist zum Beispiel:

Option 1 (Synchron): Template

Serverside:

const fs = require('fs');

var getGroupID = 60113;

res.render('docs', {
   page: setPage,
   data: {groupID: getGroupID},
   fs: fs   
});  

Vorlage:

<% if (fs.existsSync("views/docs/profile_" + data.groupID + ".ejs")) { %>
    <%- include("docs/profile_" + data.groupID); %>
<% } %>

Option 2 (Synchron): Serverside & Template

Serverside:

const fs = require('fs');

var getGroupID = 60113;

var getProfile;
if (fs.existsSync("views/docs/profile_" + getGroupID + ".ejs")) {
  getProfile = true;
} else {
  getProfile = false;
}

res.render('docs', {
   page: setPage,
   data: {groupID: getGroupID},
   profile: getProfile   
});       

Vorlage:

<% if (profile) { %>
    <%- include("docs/profile_" + data.groupID); %>
<% } %> 

Option 3 (Asynchronous I / O): Serverside & Template

Serverside:

...

var getProfile;
try {
  await fs.promises.access("views/docs/profile_" + getGroupID + ".ejs");
  getProfile = true;
} catch (error) {
  console.log(error);
}   

...
Beantwortet am 13/02/2020 um 22:46
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more