我有这个功能来保存新记录或更新现有项:
async function saveEmploy(c){
let employ=new collaboratore();
employ=c;
let docs=c.documenti.length>0?c.documenti:undefined;
if(docs!==undefined){
let oldDocs=docs.map(d=>{if (d._id) d;});
oldDocs.forEach(async d=>{
let oldDoc=await documento.findOneAndReplace({_id:doc._id},doc,{upsert:true});
employ.documenti.push(oldDoc._id);
});
let newDocs=docs.map(d=>{if(!d._id)d;});
newDocs.forEach(async d=>{
let newDoc=await d.save();
employ.documenti.push(newDoc._id);
});
}
let savedEmploy=null;
if(c._id){
savedEmploy=await collaboratore.findOneAndReplace({_id:c._id},employ,{new:true,upsert:true});
}
else
savedEmploy=await employ.save();
console.log('saved');
return savedEmploy;
}
以下是模式:
const collaboratoreschema =new schema({
dataregistrazione:{type:Date,default:Date.now},
nominativo:nominativoschema,
localitanascita:{type:String,required:true,trim:true},
provincianascita:{type:String,required:true,trim:true},
datanascita:{type:Date,required:true},
indirizzoresidenza:{type:indirizzoEmbeddedSchema,required:true},
indirizzodomicilio:{type:indirizzoEmbeddedSchema,set:v=>!v || v.length===0?undefined:v},
telefoni:{type:[telefonoschema],required:true},
indirizziemail:{type:[require('../email.schema.js')],set:v=>!v || v.length===0?undefined:v},
codicefiscale:{type:String,required:true,uppercase:true,trim:true,match:/^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/},
note:{type:String,trim:true,set:v=>!v || v===''?undefined:v},
immagine:imageEmbeddedSchema,
documenti:[{type:schema.Types.ObjectId,ref:'tbFiles'}],
datainiziorapporto:{type:Date,required:true},
datafinerapporto:Date,
riferimentoazienda:{type:schema.Types.ObjectId,ref:'tbFornitori',set:v=>!v || v==={} || v===''?undefined:v},
attivo:{type:Boolean,default:true}
},{timestamps:true,useNestedStrict: true,collection:'tbCollaboratori'});
我敢打赌,您的更新文档(doc
或employ
)包含更新操作($set:{...}
)。
顾名思义,findOneAndReplace替换文档的内容,因此此处不允许使用update运算符。
很可能需要在此处使用FindoNeadUpdate或确保更新文档包含完整的新记录。
参考这篇文章,findOneAndUpdate和FindoNeandReplace有什么区别?本文MongoDB findOneAndDelete findOneAndUpdate findOneAndReplace也了解详细信息。
这真的是一个令人头痛的问题,我不知道这里出了什么问题。我几周前才开始使用猫鼬,所以我想知道这是不是我在这里误解了一些基本的东西。
在我的收藏中,只有一份文件。 我的MongoDB是3.2。
我是mongodb和Nodejs的新手,我想知道我的代码有什么问题, 谢谢你!
在这里,我将html内容存储在现在在邮件格式中,我想用存储在中的指定名称替换的文本>和的文本。行显示替换的userName和Passwd,但它不会在处更新。我的代码片段如下。 Jsoup没有更新基本文档 如何解决这个问题?
我正在编写一个小的Java库,其中包含我通常在大多数android应用程序中包含的相关代码。我决定将库导出为一个jar文件,然后将该文件放到我未来项目的libs文件夹中。 null 现在,当我在我的一个android应用程序中使用这个jar时,除了Doc部分之外,所有的一切都像预期的那样运行。当我悬停在我的库的类和方法上时,我看不到我编写的文档注释。 Q1:我是不是又少了一步? Q2:jar文件应
我有一个活动,它包含一个片段容器(FrameLayout),我在Activity.onCreate()期间在其中放置了一个片段。片段包含一个包含一串片段的ViewPager。所有这些工作都很好。页面内容显示,我可以很好地在页面中滑动,甚至可以看到操作栏中的操作,因为贡献的页面变得可见。 现在我用另一个片段替换包含ViewPager的片段: 此外,我已经用FragmentPagerAdapter替换