programing

node.js의 기존 json 개체에 새 특성 추가

muds 2023. 7. 5. 21:04
반응형

node.js의 기존 json 개체에 새 특성 추가

저는 이런 물건을 가지고 있습니다.

==================records=========={ Id: 5114a3c21203e0d811000088,
  userId: 'test',
  sUserId: test,
  userName: 'test',
  url: 'test',
  Title: 'test'
}

위 레코드에 새 필드 이름: 'test'를 추가해야 합니다. 레코드를 제공하려고 했습니다.이름 = 이름, 작동하지 않았습니다.

도와주세요

고마워요, 프랫스

반환된 Mongoose 문서에 속성을 추가하여 다른 곳에서 다시 사용하려고 하는 것 같습니다.Mongoose에서 반환한 문서는 JSON 객체가 아니므로 객체로 변환하여 속성을 추가해야 합니다.다음이 작동해야 합니다.

//... record is a mongoose Document
var r = record.toObject();
r.Name = 'test';
console.log("Record ",r);

이 문제를 발견한 OP는 원래 질문 아래의 코멘트에서 이 문제에 대한 해결책은 다음과 같다고 언급했습니다.

records.set('Name', 'test')

이것은 다음과 같은 새로운 속성을 추가합니다.Name가치가 있는test.

그냥 사용하세요.

var convertedJSON = JSON.parse(JSON.stringify(mongooseReturnedDocument);

그리고 나서.

convertedJSON.newProperty = 'Hello!' 

'Hello!'는 임의, 숫자, 개체 또는 JSON 개체 리터럴일 수 있습니다.

건배! :)

저는 비슷한 문제를 경험했고, 저의 존재적 좌절의 시간이 같은 상황에 있는 다른 사람들에게 도움이 되기를 바랍니다.Mongoose를 통해 반송된 문서는 읽기 전용이라고 믿고 싶습니다.이것은 사실이 아닙니다.

그러나 스키마에도 없는 속성은 문서에 할당할 수 없습니다.

스키마에 다음이 없는 경우:

{
    Name: {String}
}

문서에 이름을 할당하려고 하면 계속해서 좌절하게 됩니다.

위의 답변에는 저에게도 효과가 있는 해결 방법이 있지만 문제의 근본 원인을 파악하지는 못합니다.

myDocument.toObject();
JSON.parse(JSON.stringify(myDocument);

이것들은 효과가 있겠지만, 제 생각에는 문제를 숨기는 것 같습니다.진짜 문제는 Mongoose가 우리가 인식한 것보다 더 똑똑하고 당신의 스키마를 시행하고 있다는 것입니다.

를 들어, 린() 방법을 사용할 수도 있습니다.const users = await Users.find().lean().exec()

mongoose 설명서에서 다음을 참조하십시오.

희박 옵션이 활성화된 쿼리에서 반환된 문서는 MongooseDocuments가 아닌 일반 Javascript 개체입니다.저장 방법, 게터/세터 또는 기타 Mongoose 마법이 적용되지 않았습니다.

나의 변종.

스키마가 정의된 경우{strict:false}다음을 통해 새 속성을 간단히 추가할 수 있습니다.

recorcd.newProp = 'newvalue';

스키마가 정의된 경우{strict:true}앞서 언급한 것처럼 Mongoose 개체를 개체로 변환하거나 명령을 사용할 수 있습니다.

record.set('newProp','newValue',{strict:false})

http://mongoosejs.com/docs/api.html#document_Document-schema 을 참조하십시오.

이 개체를 로드한 경우records,둘다요.records.Name = "test"또는records['Name'] = "test"효과가 있을 것입니다.개체를 올바르게 로드하지 않았거나 정의되지 않은 값을 개체에 삽입하고 있습니다.

테스트 대상: 추가console.log(records.userId)터미널에 '테스트'를 인쇄해야 합니다.

가를 합니다.console.log(name)만약 당신이ReferenceError: name is not defined할 수 : 당은분할수없습다니명:records.Name = name

언급URL : https://stackoverflow.com/questions/14768132/add-a-new-attribute-to-existing-json-object-in-node-js

반응형