当我第一次创建网站时,我不知道MongoDB进行区分大小写的搜索等等,而我正在尝试解决这些问题。
在保存之前,我已经更新了代码以更改用户输入,以便将其小写并修剪多余的空格。
我可以轻松地从mongo shell中更新一个用户集合,然后我很高兴去那里,但是我还有另一个需要更新的集合,它看起来像这样:
注册数据对象:
{
event: string,
field: string,
users: [string],
players: [
first: string,
last: string,
email: string
]
}
如果可以通过修剪并从mongo shell中将其变为小写形式来更新所有注册的players.email字段,那么我很乐意这样做。但是我不认为这是事实,而且我在用猫鼬做这件事时遇到了麻烦(使用Node.js后端,AngularJS前端)。
我在想类似的东西,但出现类型错误:Registration.save不是函数:
module.exports.regUpdateAll = function(req, res) {
console.log('UPDATE ALL REGISTRATIONS');
Registration.find().exec((err, reg) => {
reg.forEach((reg) => {
for(var i = 0; i < reg.players.length; i++) {
reg.players[i].email = reg.players[i].email.toLowerCase().trim();
}
});
console.log(reg);
Registration.save(reg).then((err, response) => {
if(!err) {
res.status(200).send(response);
} else {
console.log(err);
res.status(500).send(err);
}
});
});
};
如何解决此问题?
答案 0 :(得分:2)
您需要从Registration模型的对象调用.save()。例如
Registration.find().exec((err, regtrations) => {
regtrations.forEach((reg) => {
reg.players =
reg.players.map( p=> {
p.email = p.email.toLowerCase().trim();
return p;
})
console.log(reg);
reg.markModified("players");
reg.save( (error)=> {
//do something
})
})
});
答案 1 :(得分:0)
我知道了!这花了整整一整天,但我终于使它起作用。我无法基于has_signed的值来使它工作,但是我能够通过这种方式做到这一点:
this.adminService.GetUnsignedWaivers()
.subscribe((data: []) => {
this.players = data;
this.players.forEach((p) => {
p.waivers =
p.waivers.map( w=> {
if(w.signatureUrl.length>0) {
w.url = w.signatureUrl;
w.message = "View Waiver";
}
return w;
});
});
this.size = this.players.length;
console.log(this.players);
});
我只是不明白为什么。