Node.js 如何使用其他集合中的数据创建文档? const mongoose=require('mongoose'); const Schema=mongoose.Schema; const CompanySchema=新模式( { 公司名称:{ 类型:字符串, 要求:正确, 独一无二:真的 }, 税务局:{ 类型:字符串 }, 税号:{ 类型:字符串 }, }, { 时间戳:真 } ); const Company=mongoose.model(“Company”,CompanySchema); module.exports=公司; const mongoose=require('mongoose'); const Schema=mongoose.Schema; const DateSchema=新架构({ 姓名:{ 类型:字符串, 独一无二:没错, 必填项:true }, 公司:[{type:mongoose.Schema.Types.ObjectId,ref:'Company'}] }); const Date=mongoose.model('Date',DateSchema',dates'); module.exports=日期; const router=require('express').router(); const Date=require(“../models/Date”); router.route('/').get((req,res)=>{ Date.find() .然后(日期=>res.json(日期)) .catch(err=>res.status(400).json('Error:'+err)); }); 路由器.route('/add').post((req,res)=>{ const name=req.body.name; const newDate=新日期({name}); 新日期 .save() 。然后(()=>res.json('dateadded!')) .catch(err=>res.status(400).json('Error:'+err)); }); module.exports=路由器; 我有两个系列叫做公司和日期 我将许多数据插入到公司收集中 但是,每当我创建日期文档时,我都希望将公司数据复制到日期集合中 我想将公司数据存储为每个日期的数组 顺便说一句,我不知道我的模式设计是否正确。我该怎么办 我想要一个日期文档,如: { 名称:“2019年12月”, 公司:['5e2076236664640d22515f7b','5e2076236664640d22515f7a'] }

Node.js 如何使用其他集合中的数据创建文档? const mongoose=require('mongoose'); const Schema=mongoose.Schema; const CompanySchema=新模式( { 公司名称:{ 类型:字符串, 要求:正确, 独一无二:真的 }, 税务局:{ 类型:字符串 }, 税号:{ 类型:字符串 }, }, { 时间戳:真 } ); const Company=mongoose.model(“Company”,CompanySchema); module.exports=公司; const mongoose=require('mongoose'); const Schema=mongoose.Schema; const DateSchema=新架构({ 姓名:{ 类型:字符串, 独一无二:没错, 必填项:true }, 公司:[{type:mongoose.Schema.Types.ObjectId,ref:'Company'}] }); const Date=mongoose.model('Date',DateSchema',dates'); module.exports=日期; const router=require('express').router(); const Date=require(“../models/Date”); router.route('/').get((req,res)=>{ Date.find() .然后(日期=>res.json(日期)) .catch(err=>res.status(400).json('Error:'+err)); }); 路由器.route('/add').post((req,res)=>{ const name=req.body.name; const newDate=新日期({name}); 新日期 .save() 。然后(()=>res.json('dateadded!')) .catch(err=>res.status(400).json('Error:'+err)); }); module.exports=路由器; 我有两个系列叫做公司和日期 我将许多数据插入到公司收集中 但是,每当我创建日期文档时,我都希望将公司数据复制到日期集合中 我想将公司数据存储为每个日期的数组 顺便说一句,我不知道我的模式设计是否正确。我该怎么办 我想要一个日期文档,如: { 名称:“2019年12月”, 公司:['5e2076236664640d22515f7b','5e2076236664640d22515f7a'] },node.js,mongodb,express,mongoose,backend,Node.js,Mongodb,Express,Mongoose,Backend,听起来,每当您在日期集合中创建新文档时,您都想采取行动。如果您使用的是Atlas(MongoDB的完全托管数据库即服务),则可以将触发器配置为在将新文档插入日期集合时触发。另一个选项(无论您是否使用Atlas)是使用变更流来监控日期集合中的变更。有关如何配置这些对象的详细信息,请参见。假设只有创建日期对象时存在的公司才应添加到日期的“公司”字段中,则您可以在任何时间点维护公司对象的缓存,该缓存将针对公司集合中的每次删除/插入进行更新 您可以编写自己的函数来创建日期对象,该对象将具有添加当前公司对

听起来,每当您在日期集合中创建新文档时,您都想采取行动。如果您使用的是Atlas(MongoDB的完全托管数据库即服务),则可以将触发器配置为在将新文档插入日期集合时触发。另一个选项(无论您是否使用Atlas)是使用变更流来监控日期集合中的变更。有关如何配置这些对象的详细信息,请参见。

假设只有创建日期对象时存在的公司才应添加到日期的“公司”字段中,则您可以在任何时间点维护公司对象的缓存,该缓存将针对公司集合中的每次删除/插入进行更新

您可以编写自己的函数来创建日期对象,该对象将具有添加当前公司对象的参数名

Date.statics.getNewDateObject = function(name) {
   let companyIds = await getCachedCompanyIds();
   return new Date({name: name, companies: companyIds});
}
这将包含如下文档:

{
名称:“今天的日期”,
公司:['5e2076236664640d22515f7b','5e2076236664640d22515f7a']
}

如果要使用完整的公司信息填充日期对象,可以使用mongoose中的填充方法将完整的公司信息填充到日期对象中

我解决了它:

router.route('/add').post((req,res)=>{
const name=req.body.name;
Company.find()。然后(companys=>{
const newDate=新日期({name,companys});
新日期
.save()
。然后(()=>res.json('dateadded!'))
.catch(err=>res.status(400).json('Error:'+err));
});
});

可以看看mongoose的post中间件吗?然后是
save
钩子在这种情况下,日期集合中name的值是多少?我想将它们存储在一个名为“companys”的数组中