node.js EJS - nie czynią plik, jeśli nie istnieje

głosy
2

Mam widoków folderów strukturze i profile_60113.ejs plików EJS jak ten

views
    docs
        profile_60113.ejs

Mogę dynamicznie renderować plik tak (gdzie data.groupID == 60113):

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

Ale jak mogę najpierw sprawdzić, czy plik istnieje? Próbowałem to:

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

Lub ...

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

Ale nie działa ... fs = const require ( „FS”) jest zawarta w sterowniku i fs: fs jest renderowany

Utwórz 13/02/2020 o 21:54
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Co działa to na przykład:

Opcja 1 (synchronicznie) szablonu

Po stronie serwera:

const fs = require('fs');

var getGroupID = 60113;

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

Szablon:

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

Opcja 2 (synchronicznie) Serverside i szablonu

Po stronie serwera:

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   
});       

Szablon:

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

Wariant 3 (Asynchronous I / O) i szablonu Serverside

Po stronie serwera:

...

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

...
Odpowiedział 13/02/2020 o 22:46
źródło użytkownik

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