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
'programing' 카테고리의 다른 글
postgresql에서 로컬 변수를 선언하는 방법은 무엇입니까? (0) | 2023.07.05 |
---|---|
컬렉션에서 선택한 문서의 위치를 가져옵니다 [mongoDB]. (0) | 2023.07.05 |
UIAertController 텍스트 필드에서 입력 값을 가져오는 방법은 무엇입니까? (0) | 2023.07.05 |
SpringBoot @WebMvcTest, 자동 배선 RestTemplateBuilder (0) | 2023.07.05 |
WooCommerce의 변형에 대한 확인란을 사용하여 다중 선택 허용 (0) | 2023.07.05 |