javascript - MongoDB,如果新值不为空,则更新集合字段

标签 javascript node.js mongodb

仅当新值不为空时,我才会更新集合设置值。 我有这样的代码:

 ...
 var userName = req.body.nome;
 var userSurname = req.body.cognome;
 var userAddress = req.body.indirizzo;

 collection.update(
     {_id:ObjectId(req.session.userID)},
     {$set: { nome: userName, cognome: userSurname, indirizzo: userAddress }}
 )

有没有简单的方法可以做到这一点?

另一种方式: 如果我可以从获取数据的表单占位符中获取值 req.body.*,我就可以解决问题..但这可能吗?

最佳答案

你可以尝试这样的事情:

var objForUpdate = {};

if (req.body.nome) objForUpdate.nome = req.body.nome;
if (req.body.cognome) objForUpdate.cognome = req.body.cognome;
if (req.body.indirizzo) objForUpdate.indirizzo = req.body.indirizzo;

//before edit- There is no need for creating a new variable
//var setObj = { $set: objForUpdate }

objForUpdate = { $set: objForUpdate }

collection.update({_id:ObjectId(req.session.userID)}, objForUpdate )

关于javascript - MongoDB,如果新值不为空,则更新集合字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33357143/

相关文章:

javascript - 初始化一个数据库时,mongodb Node.js中的remove()和save()是什么意思

javascript - 卸载事件处理程序是否保证在加载下一页之前完成执行?

javascript - 哪种创建特定尺寸 Canvas 的 jQuery 方法具有最佳性能?

javascript - 无法在 Ionic 中运行 angular-google-analytics。由于异常而中止执行

node.js - 使用azure隐式流检索oauth访问 token

javascript - 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs/ESM

node.js - Mongoose 查询检查搜索元素数组中的特定值

MongoDB - 从单个数组元素中取消设置属性

javascript - 为什么for循环不运行里面的内容?

mysql - 使用 (No)SQL 的 Rails 微博