
อินเทอร์เฟซผู้ดูแลระบบ MongoDB บนเว็บที่เขียนด้วย node.js, Express และ Bootstrap 5
| โฮมเพจ | มุมมองฐานข้อมูล | มุมมองคอลเลกชัน | การแก้ไขเอกสาร |
|---|---|---|---|
ภาพหน้าจอเหล่านี้มาจากเวอร์ชัน 0.30.40 ดูอัลบั้มสำหรับภาพหน้าจอเพิ่มเติม: (สถานะเซิร์ฟเวอร์มุมมองฐานข้อมูล ฯลฯ ) https://imgur.com/a/9vhsf
ในการทดสอบหรือพัฒนาด้วยเวอร์ชันล่าสุด (สาขา หลัก ) คุณสามารถติดตั้งได้โดยใช้ที่เก็บ Git นี้:
npm i mongo-express@github:mongo-express/mongo-express
OR
yarn add mongo-express@github:mongo-express/mongo-express
OR
pnpm add mongo-express@github:mongo-express/mongo-express
คัดลอก config.default.js เป็น config.js และแก้ไขคุณสมบัติเริ่มต้นเพื่อให้พอดีกับสภาพแวดล้อมในพื้นที่ของคุณ
เรียกใช้งานสร้างการพัฒนาโดยใช้:
npm run start-dev
OR
yarn start-dev
OR
pnpm run start-dev
Mongo-Express ต้องการ node.js v18.18 หรือสูงกว่า
ในการติดตั้ง:
npm i -g mongo-express
OR
yarn add -g mongo-express
OR
pnpm add -g mongo-express
หรือหากคุณต้องการติดตั้งสำเนาที่ไม่ใช่ Global:
npm i mongo-express
OR
yarn add mongo-express
OR
pnpm add mongo-express
โดยค่าเริ่มต้น config.default.js ถูกใช้ซึ่งการตรวจสอบสิทธิ์การเข้าถึงพื้นฐานคือ admin : pass เห็นได้ชัดว่าไม่ปลอดภัยและมีคำเตือนในคอนโซล
เพื่อกำหนดค่า:
คัดลอก YOUR_PATH/node_modules/mongo-express/config.default.js ลงในไฟล์ใหม่ที่เรียกว่า YOUR_PATH/node_modules/mongo-express/config.js
หมายเหตุ: Your_Path จะขึ้นอยู่กับผู้ใช้ระบบปฏิบัติการและการกำหนดค่าระบบปัจจุบันของคุณ คุณสามารถดูได้ในข้อความเอาต์พุตที่แสดงหลังจากดำเนินการติดตั้ง NPM
กรอกรายละเอียดการเชื่อมต่อ MongoDB และตัวเลือกอื่น ๆ ที่คุณต้องการเปลี่ยนใน config.js
คุณจะต้องสร้างไฟล์. env พร้อมตัวแปรสำหรับความลับของคุกกี้และเซสชันของคุณนี่เป็นเพียงค่าเริ่มต้น
ME_CONFIG_SITE_COOKIESECRET: 'cookiesecret',
ME_CONFIG_SITE_SESSIONSECRET: 'sessionsecret',
วิ่ง:
cd YOUR_PATH/node_modules/mongo-express/ && node app.js
หรือถ้าคุณติดตั้งทั่วโลกคุณสามารถเริ่มต้น Mongo-express ได้ทันทีเช่นนี้:
mongo-express
คุณสามารถเพิ่มตัวเลือกการกำหนดค่าบางอย่าง ตัวอย่าง:
node app.js --url mongodb://127.0.0.1:27017
หรือ:
mongo-express --URL mongodb://127.0.0.1:27017
ตัวเลือกการกำหนดค่า:
| ตัวเลือก | สั้น | คำอธิบาย |
|---|---|---|
--version | -V | เอาต์พุตหมายเลขเวอร์ชัน |
--url <url> | -U <url> | URL สตริงการเชื่อมต่อ ( <url> ตัวอย่าง: mongodb://127.0.0.1:27017 ) |
--admin | -a | เปิดใช้งานการรับรองความถูกต้องในฐานะผู้ดูแลระบบ |
--port <port> | -p <port> | ฟังบนพอร์ตที่ระบุ (ค่าเริ่มต้น <port> คือ 8081 ) |
--help | -h | แสดงความช่วยเหลือสำหรับตัวเลือกคำสั่ง |
node_modules/mongo-express/app.js การเมาน
var mongo_express = require('mongo-express/lib/middleware')
var mongo_express_config = require('./mongo_express_config')
app.use('/mongo_express', mongo_express(mongo_express_config))
ตรวจสอบให้แน่ใจว่าคุณมีคอนเทนเนอร์ MongoDB ที่ใช้งานอยู่บนเครือข่าย Docker ( --network some-network ด้านล่าง) ด้วย --name หรือ --network-alias ตั้งค่าเป็น mongo หรือตั้งค่าสตริงการเชื่อมต่อ ME_CONFIG_MONGODB_URL เป็นการเชื่อมต่อที่เหมาะสมสำหรับคอนเทนเนอร์ mongoDB ของคุณบนเครือข่ายนักเทียบท่าของคุณ
ใช้อิมเมจ Docker Hub:
$ docker run -it --rm -p 8081:8081 --network some-network mongo-expressสร้างจากแหล่งที่มา:
สร้างภาพจากไดเรกทอรีโครงการจากนั้นเรียกใช้ภาพ
$ docker build -t mongo-express .
$ docker run -it --rm -p 8081:8081 --network some-network mongo-expressคุณสามารถใช้ตัวแปรสภาพแวดล้อมต่อไปนี้เพื่อแก้ไขการกำหนดค่าของคอนเทนเนอร์:
| ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
ME_CONFIG_MONGODB_URL | mongodb://admin:pass@localhost:27017/db?ssl=false | |
ME_CONFIG_MONGODB_ENABLE_ADMIN | false | เปิดใช้งานการเข้าถึงผู้ดูแลระบบ ส่งสตริง: "true" หรือ "false" |
ME_CONFIG_MONGODB_AUTH_USERNAME | admin | ชื่อผู้ใช้ฐานข้อมูล (จำเป็นหาก ENABLE_ADMIN เป็น "false" ) |
ME_CONFIG_MONGODB_AUTH_PASSWORD | pass | รหัสผ่านฐานข้อมูล (จำเป็นหาก ENABLE_ADMIN เป็น "false" ) |
ME_CONFIG_MONGODB_ALLOW_DISK_USE | false | ลบขีด จำกัด ของ RAM 100 MB ในแต่ละขั้นตอนการรวมท่อ |
ME_CONFIG_MONGODB_TLS | false | ใช้ใบรับรองไคลเอนต์ TLS |
ME_CONFIG_MONGODB_TLS_ALLOW_CERTS | true | ตรวจสอบใบรับรองเซิร์ฟเวอร์ Mongod กับ CA |
ME_CONFIG_MONGODB_TLS_CA_FILE | - | ไฟล์ใบรับรอง CA |
ME_CONFIG_MONGODB_TLS_CERT_FILE | - | ไฟล์ใบรับรองไคลเอนต์ TLS |
ME_CONFIG_MONGODB_TLS_CERT_KEY_FILE | - | ไฟล์คีย์ใบรับรองไคลเอนต์ TLS |
ME_CONFIG_MONGODB_TLS_CERT_KEY_FILE_PASSWORD | - | รหัสผ่านคีย์คีย์ใบรับรองไคลเอนต์ TLS |
ME_CONFIG_MONGODB_URL_FILE | - | เวอร์ชันไฟล์ของ me_config_mongodb_url |
ME_CONFIG_MONGODB_AWS_DOCUMENTDB | false | สิ่งนี้อนุญาตให้ AWS DocumentDB เข้ากันได้ (ทดลอง) |
ME_CONFIG_SITE_BASEURL | / | ตั้งค่า baseUrl ด่วนเพื่อความสะดวกในการติดตั้งที่ไดเรกทอรีย่อย อย่าลืมรวมถึงการเป็นผู้นำและต่อท้าย |
ME_CONFIG_HEALTH_CHECK_PATH | /status | ตั้งเส้นทาง Mongo Express Healthcheck อย่าลืมเพิ่มสแลชไปข้างหน้าในตอนเริ่มต้น |
ME_CONFIG_SITE_COOKIESECRET | cookiesecret | สตริงที่ใช้โดย Middleware คุกกี้ Parser เพื่อลงนามคุกกี้ |
ME_CONFIG_SITE_SESSIONSECRET | sessionsecret | สตริงที่ใช้ลงนามในเซสชัน ID คุกกี้โดยมิดเดิลแวร์ด่วนเซสชัน |
ME_CONFIG_BASICAUTH | false | เลิกใช้แล้วใช้ ME_CONFIG_BASICAUTH_ENABLED แทน |
ME_CONFIG_BASICAUTH_ENABLED | false | เปิดใช้งานการตรวจสอบขั้นพื้นฐาน ส่งสตริง: "true" หรือ "false" |
ME_CONFIG_BASICAUTH_USERNAME | - | ชื่อล็อกอินเว็บ Mongo-Express หากไม่ได้กำหนด admin คือชื่อผู้ใช้ |
ME_CONFIG_BASICAUTH_USERNAME_FILE | - | เวอร์ชันไฟล์ของ ME_CONFIG_BASICAUTH_USERNAME |
ME_CONFIG_BASICAUTH_PASSWORD | - | รหัสผ่านเข้าสู่ระบบเว็บ Mongo-Express หากไม่ได้กำหนดให้ pass เป็นรหัสผ่าน |
ME_CONFIG_BASICAUTH_PASSWORD_FILE | - | เวอร์ชันไฟล์ของ ME_CONFIG_BASICAUTH_PASSWORD |
ME_CONFIG_OIDCAUTH_ENABLED | false | เปิดใช้งานการรับรองความถูกต้องของ OpenIdConnect ส่งสตริง: "true" หรือ "false" |
ME_CONFIG_OIDCAUTH_ISSUER | - | ผู้ออก OAuth2 รูท URL ไปยังข้อมูลเมตาของ OpenIdConnect เช่น "<issuer>/.well-known/openid-configuration" |
ME_CONFIG_OIDCAUTH_ISSUER_FILE | - | เวอร์ชันไฟล์ของ ME_CONFIG_OIDCAUTH_ISSUER |
ME_CONFIG_OIDCAUTH_CLIENTID | - | OAuth2 ClientId ลูกค้าจะต้องเป็นส่วนตัวและได้รับอนุญาตให้ดำเนินการให้สิทธิ์การไหลของรหัสการอนุญาต |
ME_CONFIG_OIDCAUTH_CLIENTID_FILE | - | เวอร์ชันไฟล์ของ ME_CONFIG_OIDCAUTH_CLIENTID |
ME_CONFIG_OIDCAUTH_CLIENTSECRET | - | ความลับของลูกค้า OAuth2 |
ME_CONFIG_OIDCAUTH_CLIENTSECRET_FILE | - | เวอร์ชันไฟล์ของ ME_CONFIG_OIDCAUTH_CLIENTSECRET |
ME_CONFIG_OIDCAUTH_SECRET | - | ความลับแบบสุ่มที่ใช้โดยไลบรารีเพื่อเริ่มการไหลของรหัสการอนุญาต (จำเป็น) |
ME_CONFIG_OIDCAUTH_SECRET_FILE | - | เวอร์ชันไฟล์ของ ME_CONFIG_OIDCAUTH_SECRET_FILE |
ME_CONFIG_OIDCAUTH_BASEURL | - | URL ฐาน OAUTH2 มันใช้เพื่อสร้าง URL เปลี่ยนเส้นทางเช่น "<base-url>/callback" หากไม่ได้ระบุ ME_CONFIG_SITE_BASEURL |
ME_CONFIG_OIDCAUTH_BASEURL_FILE | - | เวอร์ชันไฟล์ของ ME_CONFIG_OIDCAUTH_BASEURL |
ME_CONFIG_REQUEST_SIZE | 100kb | ใช้ในการกำหนดค่าขนาดน้ำหนักบรรทุกการอัปเดต Mongo สูงสุด การดำเนินการ CRUD ที่สูงกว่าขนาดนี้จะล้มเหลวเนื่องจากข้อ จำกัด ของผู้ป่วยในร่างกาย |
ME_CONFIG_OPTIONS_READONLY | false | หากอ่านอย่างง่าย ๆ ส่วนประกอบของการเขียนจะไม่ปรากฏ |
ME_CONFIG_OPTIONS_FULLWIDTH_LAYOUT | false | หากตั้งค่าเป็นรูปแบบหน้าเว็บทางเลือกที่ใช้โดยใช้ความกว้างของหน้าต่างเต็มรูปแบบ |
ME_CONFIG_OPTIONS_PERSIST_EDIT_MODE | false | หากตั้งค่าเป็นจริงให้อยู่ในหน้าเดียวกันหลังจากคลิกที่ปุ่มบันทึก |
ME_CONFIG_OPTIONS_NO_DELETE | false | หากโหนดเป็นจริงส่วนประกอบของการลบจะไม่สามารถมองเห็นได้ |
ME_CONFIG_SITE_SSL_ENABLED | false | เปิดใช้งาน SSL |
ME_CONFIG_SITE_SSL_CRT_PATH | | ไฟล์ใบรับรอง SSL |
ME_CONFIG_SITE_SSL_KEY_PATH | | ไฟล์คีย์ SSL |
ME_CONFIG_SITE_GRIDFS_ENABLED | false | เปิดใช้งาน GRIDF เพื่อจัดการไฟล์ที่อัปโหลด |
ME_CONFIG_DOCUMENTS_PER_PAGE | 10 | คุณต้องการดูเอกสารกี่ฉบับในมุมมองคอลเลกชัน |
PORT | 8081 | พอร์ตที่ Mongo-Express จะทำงาน |
VCAP_APP_HOST | localhost | ที่อยู่ที่ Mongo-Express จะฟังการเชื่อมต่อที่เข้ามา |
ตัวอย่าง:
docker run -it --rm
--name mongo-express
--network web_default
-p 8081:8081
-e ME_CONFIG_BASICAUTH_ENABLED="false"
-e ME_CONFIG_MONGODB_URL="mongodb://mongo:27017"
mongo-express
ตัวอย่างนี้เชื่อมโยงไปยังชื่อคอนเทนเนอร์ตามแบบฉบับของ docker-compose เปลี่ยนธีมสีของตัวแก้ไขและปิดใช้งานการตรวจสอบขั้นพื้นฐาน
ที่จะใช้:
พอร์ตเริ่มต้นที่เปิดเผยจากคอนเทนเนอร์คือ 8081 ดังนั้นเยี่ยมชม http://localhost:8081 หรือ url/พอร์ตใด ๆ ที่คุณป้อนลงในการกำหนดค่าของคุณ (ถ้าทำงานแบบสแตนด์อโลน) หรืออะไรก็ตามที่ config.site.baseUrl (ถ้าติดตั้งเป็นมิดเดิลแวร์)
สิ่งที่ต้องทำล่วงหน้า:
การใช้งาน:
ด้วยการใช้ส่วนขยาย Mongo Express Docker ทำให้ง่ายต่อการติดตั้ง Mongo Express บนเดสก์ท็อป Docker ด้วยการคลิกเพียงครั้งเดียว
ปรับใช้กับ IBM Cloud
ทำด้วยตนเอง:
examples/ibm-cloud/manifest.yml เพื่อให้พอดีกับแอพ IBM Cloud และสภาพแวดล้อมการบริการของคุณทำโดยอัตโนมัติ:
จากนั้นดำเนินการต่อไปนี้เพื่อปรับแต่งสภาพแวดล้อมของคุณ:
config.js ของคุณตาม config.default.jsdbLabel ตามบริการ MongoDB ที่สร้างขึ้นbasicAuth อย่าเก็บค่าเริ่มต้น การใช้งานกับแพ็คเกจ mongo-express
หากคุณติดตั้ง mongo-express เป็น แพ็คเกจ ให้ติดตั้งการพึ่งพา express-openid-connect :
yarn add express-openid-connectตั้งค่าแอปพลิเคชัน OAuth2
การใช้งานปัจจุบันรองรับการให้รหัสการอนุมัติรหัสการอนุญาต OAuth2 เพื่อให้ทำงานได้คุณต้องตั้งค่าลูกค้าในผู้ให้บริการตัวตนของคุณและส่งผ่านพารามิเตอร์ไปยังแอปพลิเคชัน:
ME_CONFIG_OIDCAUTH_ENABLED=true
ME_CONFIG_OIDCAUTH_BASEURL=https:// < domain > / < base-url >
ME_CONFIG_OIDCAUTH_ISSUER= < authority >
ME_CONFIG_OIDCAUTH_CLIENTID= < client-id >
ME_CONFIG_OIDCAUTH_CLIENTSECRET= < client-secret > # Optional
ME_CONFIG_OIDCAUTH_SECRET= < random-generated-string >
ME_CONFIG_SITE_COOKIESECRET= < client-secret >
ME_CONFIG_SITE_BASEURL=/ < base-url > ในการลงทะเบียนไคลเอนต์ของคุณคุณจะต้องใช้ URI เปลี่ยนเส้นทางของแอปพลิเคชันซึ่งสามารถรับได้โดยการต่อท้าย /callback ไปยัง URL ฐานแอปพลิเคชัน: เช่น https://example.com/mongo-express/callback
key & value ) และเตรียมวัตถุ MongoDB ค้นหา () โดยมีการตั้งค่าการฉายเป็น {} ดังนั้นจึงส่งคืนคอลัมน์ทั้งหมดfind และ projection ภาพตรงไปยัง MongoDB db.collection.find(query, projection) วัตถุ find คือที่ที่คำถามของคุณเกิดขึ้นในขณะที่วัตถุ projection กำหนดว่าคอลัมน์ใดจะถูกส่งคืนดูเอกสารประกอบ MongoDB db.collection.find () สำหรับตัวอย่างและการใช้งานที่แน่นอน
ยินดีต้อนรับคำขอดึงเสมอ! -
document._id คุณสมบัติที่จะแก้ไข We are currently trying to use Cypress, to open cypress use the command `cypress open`
To instrument the code to allow the E2E coverage to run, please run this command: `yarn nyc instrument --compact=false lib instrumented`
เอกสาร JSON จะถูกแยกวิเคราะห์ผ่านเครื่องเสมือน JavaScript ดังนั้น เว็บอินเตอร์เฟสสามารถใช้สำหรับการดำเนินการ JavaScript ที่เป็นอันตรายบนเซิร์ฟเวอร์
Mongo-Express ควรใช้เป็นการส่วนตัวเพื่อวัตถุประสงค์ในการพัฒนาเท่านั้น
ประเภทข้อมูล BSON ต่อไปนี้ได้รับการสนับสนุนในตัวแก้ไขเอกสาร/ผู้ชม Mongo-Express
ประเภทจาวาสคริปต์ดั้งเดิม
สตริงตัวเลขรายการบูลีนโมฆะ ฯลฯ
ตัวเลขทั้งหมดใน JavaScript เป็นจุดลอยตัว 64 บิต
ObjectId/ObjectId
ObjectId()
สร้างประเภท ID วัตถุใหม่
ObjectId(id)
ใช้ ID วัตถุกับสตริงเลขฐานสิบหกเลข 24 หลักที่กำหนด
isodate
ISODate()
สร้างวัตถุ isodate ใหม่ด้วยเวลาปัจจุบัน
new Date() ยังสามารถใช้ (หมายเหตุคำหลัก new ที่นั่น)
ISODate(timestamp)
ใช้วัตถุ isodate ที่มีการประทับเวลาที่กำหนด
uuid
UUID()
สร้าง UUID V4 ใหม่
สามารถใช้ new UUID() (หมายเหตุคำหลัก new ที่นั่น)
UUID(uuid)
ใช้ UUID V4 กับสตริงเลขฐานสิบหกเลข 24 หลักที่กำหนด
ตัวอย่าง: UUID("dee11d4e-63c6-4d90-983c-5c9f1e79e96c") หรือ UUID("dee11d4e63c64d90983c5c9f1e79e96c")
dbref/dbref
DBRef(collection, objectID)
DBRef(collection, objectID, database)
ID วัตถุคือสตริง ID ไม่ใช่ประเภท ObjectID
ค่าฐานข้อมูลเป็นทางเลือก
การประทับเวลา
Timestamp()
สร้างวัตถุ timestamp ใหม่ที่มีค่า 0
Timestamp(time, ordinal)
ตัวอย่าง: Timestamp(ISODate(), 0)
ดู http://www.mongoDb.org/display/docs/timestamp+data+type สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทข้อมูลการประทับเวลา
รหัส
Code(code)
รหัสสามารถเป็นฟังก์ชัน JavaScript ดั้งเดิมหรืออาจเป็นสตริง
ไม่รองรับการระบุขอบเขต/บริบท
มิกกี้
MinKey()
Maxkey
MaxKey()
เครื่องหมาย
Symbol(string)
นี่คือตัวอย่างของเอกสารที่สามารถอ่าน/แก้ไขใน Mongo-express (สื่อที่ถูกตัดทอนเพื่อความชัดเจน):
{
"_id": ObjectId(),
"dates": {
"date": ISODate("2012-05-14T16:20:09.314Z"),
"new_date": ISODate(),
"alternative": new Date()
},
"photo": "data:image/jpeg;base64,/9j/4...",
"video": "data:video/webm;base64,GkXfo...",
"audio": "data:audio/ogg;base64,T2dnUw...",
"bool": true,
"string": "hello world!",
"list of numbers": [
123,
111e+87,
4.4,
-12345.765
],
"reference": DBRef("collection", "4fb1299686a989240b000001"),
"ts": Timestamp(ISODate(), 1),
"minkey": MinKey(),
"maxkey": MaxKey(),
"func": Code(function() { alert('Hello World!') }),
"symbol": Symbol("test")
}