gpt4 book ai didi

javascript - Mongoose 模型的复用策略

转载 作者:行者123 更新时间:2023-12-03 05:50:13 24 4
gpt4 key购买 nike

我将 Mongoose 与express.js结合使用

我设计的服务器是动态创建模型的。

var schema = mongoose.Schema({ data: String }, { timestamps: true });

var model = mongoose.model(result.siteId, schema);

var data = new model({
data: JSON.stringify(req.body)
});

data.save(function (err, result) {
if (err) {
res.status(400).json({
success: false
});
} else {
res.status(200).json({
success: true,
data: result
});
}
});

这是创建模型的这一部分。 (数据输入部分)一旦服务器收到请求,请求的 siteId 就是模型的名称。它可以正常工作。但问题是使用这个创建的模型。我想要这个 mongodb 表。所以我重新声明模型,但它不起作用。

var datas = mongoose.model('modelname', {data: String});

一旦声明此模型。 “数据输入部分”(上面的代码)不起作用并停止服务器响应和超时消息。但使用另一个模型名称的其他“数据输入部分”正在工作。

我认为 Mongoose 停止了重新声明模型。我想声明模型其他js文件并使用。但 modelsname 必须是动态名称。

什么是正确的方法?

最佳答案

在尝试重用具有不同名称的 Schema 时遇到了类似的问题,并且只能通过向 Schema 创建提供集合名称来使其正常工作。

您可以通过添加 collection param 来完成类似的操作到您的架构创建选项。

但是每个模型需要不同的Schema对象,所以我建议创建一个函数来根据集合名称检索模型,例如

var buildModel = function(collectionName) {

var schema = mongoose.Schema({ data: String }, { timestamps: true, collection: collectionName });

return mongoose.model(collectionName, schema);
}

var model = buildModel(result.siteId);

var data = new model({
...

关于javascript - Mongoose 模型的复用策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40187336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com