簡體   English   中英

無法在不同文件中使用 Node.js 將文檔插入 Mongodb

[英]Can't insert document into Mongodb using Node.js in different file

所以我剛開始使用 mongoDB 和 Node.js。 我有一個問題,當我在數據庫所在的文件中使用insertOne ,我可以插入一個文檔。 但是,如果我嘗試在不同的文件中插入一個 doument,我總是會收到錯誤conn is not defined 我知道您必須以某種方式導出連接或傳遞變量,但我不知道有什么問題,所以我來這里尋求幫助。

這是我運行與數據庫連接的代碼,如果我在這里運行插入,它可以工作:

const mongoose = require('mongoose');

const mongoURI = "mongodb+srv://username:password@database.aaaa.mongodb.net/collectionName?retryWrites=true&w=majority"
mongoose.connect(mongoURI, { 
    useNewUrlParser: true,
    useUnifiedTopology: true
})
  const conn = mongoose.connection;
  conn.on('error', error => console.error(error)); 
  conn.once('open', () => { 
      console.log('Connected to Mongoose');
  });

  conn.collection('collectionName').insertOne({
      "name": 'username',
  })


module.exports = conn;

這就是我的服務器所在的位置,如果我導出數據庫文件而不是在此文件中插入,我會得到conn is not undefined

const express = require('express')
const app = express()

app.use(express.urlencoded({extended:false}))
const register = require('./public/insert/insert')
const dbConnection = require('./database')
app.use('./database', dbConnection)
app.use(express.static('public'))

app.use('/insert', insert)

 app.listen (3000, () => {
   console.log('Server is listenign on port 3000')
})

conn.collection('collectionName').insertOne({
    "name": 'username',
})

我不知道我是否需要傳遞變量或以不同的方式導出我的數據庫或什么,我現在真的不知道該怎么做。 我查看了多個示例,但沒有得到解決方案。 也許我在 Node.js 和 Mongodb 方面太差了,以至於我無法將代碼轉移到我的。

但無論如何感謝大家的幫助

在第一個文件中,您像這樣導出連接(從 conn 變量):

module.exports = conn;

這意味着require('./database')將返回 conn 的值 - 該表達式將計算為 conn 變量指向的對象。

然而,當你做

const dbConnection = require('./database')

您正在創建一個名為dbConnection的變量,並為其分配從文件./database導出的值。 這意味着,在第二個文件中,您將沒有conn變量,因為變量是文件的本地變量(在 Node.js 中也稱為模塊)。 在這里引用連接的唯一方法是通過dbConnection

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM