Mongodb Mongoose错误-具有相同模型名称的Mongoose模型
我正在开发一个NodeJs应用程序,我正在使用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
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()
});