Javascript Mongoose findOne()在多个集合中
我正在构建一个删除过程,在删除原始文档之前,我需要确定某个文档是否引用了其他文档 在下面的示例中,我需要了解我的其他文档中是否使用了给定的公司: 模型元数据:Javascript Mongoose findOne()在多个集合中,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在构建一个删除过程,在删除原始文档之前,我需要确定某个文档是否引用了其他文档 在下面的示例中,我需要了解我的其他文档中是否使用了给定的公司: 模型元数据: Company = { id: ID, name: name } User = { id: ID, name: name, company_id: ID } Application = { id: ID, type: string, company_id: ID }
Company = {
id: ID,
name: name
}
User = {
id: ID,
name: name,
company_id: ID
}
Application = {
id: ID,
type: string,
company_id: ID
}
...
下面是我将使用异步调用执行的操作:
const checkInUse = async (company_id) => {
let ret = await UserModel.findOne({ company_id: company_id });
if (ret) return true;
ret = await ApplicationModel.findOne({ company_id: company_id });
if (ret) return true;
...
return false;
}
我有十几个集合,所以一些检查需要多次调用findOne()
,这就是我想要避免的
有没有更好的检查方法?仅
承诺。所有都是为了加快检查速度。没有必要。使用异步调用将触发所有查询。在Synchronous模式下,如果第一个查询发现一个事件,则不会发出下一个查询…为什么您要执行findOne
,而可以直接删除它们?对于特定情况,这是“不必要的”。总的来说,如果真/假分布均匀,应用程序端的速度会更快,即使它会在数据库端产生额外的负载。