gpt4 book ai didi

json - 如何使用nodejs和mongo客户端更新保存在mongodb中的记录?

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:25 32 4
gpt4 key购买 nike

在 mongodb 中保存日期

{
"_id" : ObjectId("5a8a95c431789513bc542334")
"projectName" : "MMMMM",
"testCases" : [
{
"groupName" : "Data Validation Bucket 19"
},
{
"groupName" : "Test"
}
]
}

JSON 请求

{
"_id" : "5a8a95c431789513bc542334",
"updateData" : {
"projectName": "MMMMM",
"testCases": [
{
"groupName": "Data Validation Bucket 19"
},
{
"groupName": "Data Validation Bucket 123"
}
]
}
}

Nodejs代码

module.exports.update = function (data, callback) {
var connection = myDB.get();
var id = data._id;
var dataToUpdate = data.updateData;

var reponse = {
'status' : ''
}

if(id) {
console.log(id);
console.log(dataToUpdate);
connection.collection('REPORTS').update({_id : id}, {$set:dataToUpdate}, (err, result) => {
if (err) {
console.log(err);
reponse.status = constantsUtils.ERROR;
callback(reponse);
} else {
reponse.status = constantsUtils.UPDATE_SUCCESS;
callback(reponse);
}
});
} else {
reponse.status = constantsUtils.INVALID_INPUT;
callback(reponse);
}
};

我正在尝试使用nodejs和mongoclint更新保存在mongodb中的记录。我正在使用 NodeJS Restful Web 服务,并且请求已成功处理,但无法更新 Moongodb 中存在的记录。

我正在尝试更新projectNametestCases[1].groupName

最佳答案

使用$addToSet 运算符用于数组更新,因为它允许您向数组添加值,除非该值已经存在,在这种情况下 $addToSet 对该数组没有任何作用。对于其他非数组字段,$set 就足够了。

考虑将您的方法重构为

const { ObjectId } = require('mongodb'); 
const safeObjectId = s => ObjectId.isValid(s) ? new ObjectId(s) : null;

module.exports.update = function (data, callback) {
let collection = myDB.get().collection('REPORTS'),
query = {},
update = {},
id = data._id,
dataToUpdate = data.updateData,
response = { 'status' : '' };

const handleError = err => {
console.error(err);
reponse.status = constantsUtils.ERROR;
callback(reponse);
}

const handleSuccess = res => {
console.log(res);
reponse.status = constantsUtils.UPDATE_SUCCESS;
callback(reponse);
}

const handleInvalidInput = () => {
reponse.status = constantsUtils.UPDATE_SUCCESS;
callback(reponse);
}

if ( id ) {
query['_id'] = { '_id': safeObjectId(id) };
update['$set'] = { 'projectName': dataToUpdate.projectName };

if( Object.prototype.toString.call( dataToUpdate.testCases ) === '[object Array]' ) {
update['$addToSet'] = { 'testCases': { '$each': dataToUpdate.testCases } };
}

collection.findOneAndUpdate(
query,
update,
{ returnOriginal: false }
).then(handleSuccess, handleError);

} else {
handleInvalidInput();
}
};

关于json - 如何使用nodejs和mongo客户端更新保存在mongodb中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863032/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com