Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义NodeJS文件_Javascript_Node.js_Mongodb_Ejs - Fatal编程技术网

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