Javascript 未定义NodeJS文件
我试图在页面上显示我已经上传的图像/(图像),但它说文件没有定义Javascript 未定义NodeJS文件,javascript,node.js,mongodb,ejs,Javascript,Node.js,Mongodb,Ejs,我试图在页面上显示我已经上传的图像/(图像),但它说文件没有定义 app.get('/profile',(req,res) =>{ gfs.files.find().toArray((err, files) => { // Check if files if (!files || files.length === 0) { res.render('profile', {files: false}) } else { fi
app.get('/profile',(req,res) =>{
gfs.files.find().toArray((err, files) => {
// Check if files
if (!files || files.length === 0) {
res.render('profile', {files: false})
} else
{
files.map(file => {
if(file.contentType === 'image/jpeg' || file.contentType === 'image/png'){
file.isImage = true;
} else {
file.isImage = false;
}
});
res.render('profile',{files: files})
}
});
我使用的是EJS视图引擎。profile.ejs
我的代码:
上传你的图片
“alt=”“>
没有要显示的文件
我不明白为什么我总是得到这个错误,文件没有定义。
参考错误:C:\Users\User\Desktop\Oauth\views\profile.ejs:111
109| </form>
110| <hr>
111| <% if(files){ %>
files is not defined
109|
110 |
111|
未定义文件
尝试检查回调中的err参数以开始调试
app.get('/profile',(req,res) =>{
gfs.files.find().toArray((err, files) => {
if (err) {
console.log(err); // debug the error
return res.render('profile', {files: false});
}
// Check if files
if (!files || files.length === 0) {
res.render('profile', {files: false})
} else {
// map the files and set it to itself
files = files.map((file) => {
if(file.contentType == 'image/jpeg' || file.contentType == 'image/png'){
file.isImage = true;
} else {
file.isImage = false;
}
return file; // You forgot this.
});
res.render('profile',{files: files})
}
});
谢谢,但它不起作用,毫无疑问……你能试着在回调中控制台.log(文件)吗?嗯……考虑到代码修改
文件文件内部文件。map
这与OP代码基本上没有什么不同(OP可以使用forEach,并且仍然得到相同的结果)下面是一个示例,我正试图使用它来学习如何上传一个文件并稍后在我的页面上显示它。如果将上面的更改为app.get('/profile',(req,res)=>res.render('profile',{files:false}))
注意:files.map(file=>{/code>应该是files.forEach(file=>{/code>因为a)您忽略了返回的值,并且b)您正在更改原始的“文件”“对象,向其添加isImage
属性。这不是问题,但要获得更清晰的代码,请使用forEach Not Map。请不要重新发布问题。而是修复现有问题中的问题。您在此处收到的反馈与原始问题中的反馈非常相同,正如前面提到的,问题很可能是“范围问题”。请返回原始版本,并将其分解为一个小列表,该列表再现了问题,而不仅仅是大型应用程序的一部分。请参阅
app.get('/profile',(req,res) =>{
gfs.files.find().toArray((err, files) => {
if (err) {
console.log(err); // debug the error
return res.render('profile', {files: false});
}
// Check if files
if (!files || files.length === 0) {
res.render('profile', {files: false})
} else {
// map the files and set it to itself
files = files.map((file) => {
if(file.contentType == 'image/jpeg' || file.contentType == 'image/png'){
file.isImage = true;
} else {
file.isImage = false;
}
return file; // You forgot this.
});
res.render('profile',{files: files})
}
});