Mongodb Mongoose错误-具有相同模型名称的Mongoose模型

Mongodb Mongoose错误-具有相同模型名称的Mongoose模型,mongodb,mongoose,mongoose-schema,mongoose-models,Mongodb,Mongoose,Mongoose Schema,Mongoose Models,我正在开发一个NodeJs应用程序,我正在使用mongoose节点包 示例代码 我使用以下方法创建动态集合,这些集合有时无法将数据持久化到数据库中- const Mongoose = require("mongoose"); const Schema = new Mongoose.Schema({ // schema goes here }); module.exports = function (suffix) { if (!suffix || typeof suffix

我正在开发一个NodeJs应用程序,我正在使用mongoose节点包

示例代码 我使用以下方法创建动态集合,这些集合有时无法将数据持久化到数据库中-

const Mongoose = require("mongoose");

const Schema = new Mongoose.Schema({
    // schema goes here
});

module.exports = function (suffix) {
    if (!suffix || typeof suffix !== "string" || !suffix.trim()) {
        throw Error("Invalid suffix provided!");
    }
    return Mongoose.model("Model", Schema, `collection_${suffix}`);
};
我使用这个导出的模块根据作为
后缀
参数传递的唯一ID创建动态集合。类似这样的内容(跳过不必要的代码)——


问题 问题是,测试2失败了!如果
insertmany
API导致0条记录未通过计数断言

如果我们交换测试顺序,测试1将失败

如果我分别运行这两个测试,它们都会通过

如果有n个测试,则只有第一个测试通过,其余测试将失败


调查结果 我怀疑
mongoose模型创建步骤
有问题,因为它使用的是相同的模型名称viz<代码>模型同时创建多个模型实例

我将其改为以下内容,并且测试在所有场景中都运行良好-

return Mongoose.model(`Model_${suffix}`, Schema, `collection_${suffix}`);
问题 这给我留下了以下问题-

  • 创建动态集合时是否遵循正确的编码约定
  • 可疑代码是否是此问题的实际原因(型号名称是否也应唯一)
  • 如果是,为什么会失败?(我遵循了这一点,但它没有提供关于modelname参数唯一性的任何信息

谢谢。

I您正在dbModel1上调用insertMany方法,您的变量被声明为dbModel2

将测试2更改为:

dbModel1.insertMany(data2)
        .then(dbResponse1 => {
            // assert for count
            done()
        });
致:


我想你在我打字的时候编辑了你的帖子,看起来你改正了错误。你还存在这个问题吗?还是仅仅是一个输入错误?谢谢你的回复!这是示例代码片段中的一个输入错误。:)
dbModel1.insertMany(data2)
        .then(dbResponse1 => {
            // assert for count
            done()
        });
dbModel2.insertMany(data2)
        .then(dbResponse1 => {
            // assert for count
            done()
        });