Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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

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 抛出新错误(';猫鼬未连接';); 因此,我尝试在express中使用mongoose gridfs模块,但在尝试运行express服务器时出现以下错误。_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 抛出新错误(';猫鼬未连接';); 因此,我尝试在express中使用mongoose gridfs模块,但在尝试运行express服务器时出现以下错误。

Javascript 抛出新错误(';猫鼬未连接';); 因此,我尝试在express中使用mongoose gridfs模块,但在尝试运行express服务器时出现以下错误。,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我的连接字符串是否正常,但我似乎无法理解。我真的需要帮助。谢谢大家 正如您从跟踪中看到的,当它尝试创建GridFSStorage实例并抛出错误时,会发生问题,因为mongoose尚未就绪: 错误:Mongoose未连接 在新建GridFSStorage(C:\Users\BARMAN\Documents\Codes\zubis mart\node) _modules\mongoose gridfs\lib\storage.js:43:11) 在连接gridfs之前,确保mongoose已连接到

我的连接字符串是否正常,但我似乎无法理解。我真的需要帮助。谢谢大家

正如您从跟踪中看到的,当它尝试创建
GridFSStorage
实例并抛出错误时,会发生问题,因为mongoose尚未就绪:

错误:Mongoose未连接
新建GridFSStorage(C:\Users\BARMAN\Documents\Codes\zubis mart\node) _modules\mongoose gridfs\lib\storage.js:43:11)


在连接gridfs之前,确保mongoose已连接到db

下面是修复程序:

const express = require('express');
const bcrypt = require('bcryptjs');
const fs = require('fs');
const mongoose = require('mongoose');
const mongooseGridFS = require('mongoose-gridfs');
const multer = require('multer');
const passport = require('passport');


const config = require('../config/database');

mongoose.connect(config.database, {
    useNewUrlParser: true
});

let conn = mongoose.connection;

conn.once('open', () => {
    console.log('Database File Upload Connection Established Successfully.');

    global.gridfs = mongooseGridFS({
      collection: 'images',
      model: 'Image',
      mongooseConnection: conn
    });
});

conn.on('error', (err) => {
    console.log('File Connection Error... ' + err);
});

顺便说一句,我读到的精神错乱与你的问题完全一样,这是不正确的。

因为在源代码中,它会立即检查连接状态,这表明文档不正确。

您应该确保先打开连接,然后初始化gridfs

conn.once('open', () => {
    global.gridfs = mongooseGridFS({
      collection: 'images',
      model: 'Image',
      mongooseConnection: conn
    });
});

谢谢,这很有效。但是现在我无法从另一个块访问gridfs变量。那么如何访问用“global”关键字定义的变量呢?
const express = require('express');
const bcrypt = require('bcryptjs');
const fs = require('fs');
const mongoose = require('mongoose');
const mongooseGridFS = require('mongoose-gridfs');
const multer = require('multer');
const passport = require('passport');


const config = require('../config/database');

mongoose.connect(config.database, {
    useNewUrlParser: true
});

let conn = mongoose.connection;

conn.once('open', () => {
    console.log('Database File Upload Connection Established Successfully.');

    global.gridfs = mongooseGridFS({
      collection: 'images',
      model: 'Image',
      mongooseConnection: conn
    });
});

conn.on('error', (err) => {
    console.log('File Connection Error... ' + err);
});
conn.once('open', () => {
    global.gridfs = mongooseGridFS({
      collection: 'images',
      model: 'Image',
      mongooseConnection: conn
    });
});