node.js ejs - Do ikke gjengi filen hvis den ikke eksisterer

stemmer
2

Jeg har en mappevisninger struktur og en ejs fil profile_60113.ejs som dette

views
    docs
        profile_60113.ejs

Jeg kan dynamisk gjengi filen som dette (hvor data.groupID == 60113):

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

Men hvordan kan jeg først sjekke om filen finnes? Jeg prøvde dette:

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

Eller ...

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

Men det fungerte ikke ... const fs = require ( 'fs') er inkludert i kontrolleren og fs: fs gjengis

Publisert på 13/02/2020 klokken 23:54
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Hva som fungerer er f.eks:

Alternativ 1 (synkront): Mal

Server:

const fs = require('fs');

var getGroupID = 60113;

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

Mal:

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

Alternativ 2 (synkront): Server & Mal

Server:

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

Mal:

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

Alternativ 3 (Asynkron I / O): Server & Mal

Server:

...

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

...
Svarte 14/02/2020 kl. 00:46
kilden bruker

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