我正在尝试集成以下包来创建一个将文件保存到 MongoDB 中的 API。 mongodb、multer、multer-gridfs-storage、gridfs-stream.
(我使用的是 mongodb 驱动程序而不是 mongoose)
我使用以下代码建立连接、创建网格并导出数据库实例:
import { MongoClient, Db, MongoError } from "mongodb";
import Grid from "gridfs-stream";
let db: Db;
let gfs: Grid.Grid;
export const connectToDb = (cb: Function) => {
MongoClient.connect(process.env.MONGODB_CONNECTION_STRING!)
.then((client) => {
db = client.db("main-database");
gfs = Grid(db, MongoClient);
gfs.collection("uploads");
return cb();
})
.catch((err: MongoError) => {
console.error(err);
return cb(err);
});
};
export const getDb = () => db;
就其实际将文件保存到 atlas 集群而言,它工作正常。
当它在集群中创建一个名为“test”的单独数据库而不是我指定的数据库(“main-database”)时,它的行为出乎意料。现在我的集群中有两个数据库,“主数据库”包含我指定的集合,“测试”包含 gridfs 集合“uploads.chunks”和“uploads.files”。我想要的是我所有的收藏都在一个数据库(“主数据库”)下。
知道为什么会发生这种情况以及如何解决它吗?