【问题标题】:Cannot connect mongoose with express rest api无法使用 express rest api 连接猫鼬
【发布时间】:2021-04-01 10:45:17
【问题描述】:

我正在尝试使用 express 创建一个 rest api 并连接到 mongodb,我创建了一个脚本来完成这项工作并将其导入 app.js 文件中:

app.js

import express from 'express'
import morgan from 'morgan'
import dotenv from 'dotenv'
import mongoose from './config/mongoose.connection.js'
import logger from './config/logger.js'
import { port, env } from './config/vars.js'

const app = express();


app.use(express.urlencoded({
    extended: true
}));

app.use(dotenv.config)

// start server

app.listen(port, () => {
    logger.info(`server started on port ${port} (${env})`)
    console.log('Server listening on port ' + port);
});

// open mongoose connection
mongoose.connectDB();

mongoose.connection.js

import { Promise as _Promise, connection, set, connect } from 'mongoose';
import { error } from './logger.js';
import { mongo, env } from './vars.js';

// set mongoose Promise to Bluebird
_Promise = Promise;

// Exit application on error
connection.on('error', (err) => {
    error(`MongoDB connection error: ${err}`);
    process.exit(-1);
});

// print mongoose logs in dev env
if (env === 'development') {
    set('debug', true);
}

/**
 * Connect to mongo db
 *
 * @returns {object} Mongoose connection
 * @public
 */
export function connect() {
    connect(mongo.uri, {
            useCreateIndex: true,
            keepAlive: 1,
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useFindAndModify: false,
        })
        .then(() => console.log('mongoDB connected...'));
    return connection;
}

运行应用程序时出现此错误:

file:///home/sahnoun/Documents/Fwinr-BACKEND/src/config/mongoose.connection.js:25 导出函数连接(){ ^

SyntaxError: 标识符 'connect' 已被声明

【问题讨论】:

    标签: node.js mongodb api express connection


    【解决方案1】:

    在这种情况下,请始终查看足够明确的错误:

    connect' has already been declared
    

    您可以看到您正在导入函数connect 以及导出名为connect 的函数。只需重命名您的函数即可。

    export function connectToMongo() {
      connect(mongo.uri, {
        useCreateIndex: true,
        keepAlive: 1,
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useFindAndModify: false,
      })
        .then(() => console.log('mongoDB connected...'));
      return connection;
    }
    

    奖金

    如果你想保留你的函数名connect,那么在导入时,使用类似:

    import { Promise as _Promise, connection, set, connect as connectToMongo } from 'mongoose';
    
    export function connect() {
      connectToMongo(mongo.uri, {
      ...
    

    【讨论】:

      猜你喜欢
      • 2020-04-03
      • 2022-12-11
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      相关资源
      最近更新 更多