홈>
몽구스에이 스키마가 있습니다 :
var CoinAmountSchema = new Schema(
{
user: [{ type: Schema.ObjectId, ref: 'User' }],
coinAmounts: [{
_id: false,
coinID: { type: Number, ref: 'Coin' },
amount: Number
}]
})
이 쿼리를 작성하고 있는데,이 쿼리는 userID 및 coinID를 확인하고 해당 coinID의 금액 만 업데이트해야합니다.
exports.coin_amount_update = [
(req, res, next) => {
CoinAmount.update({
"user": req.params.userId,
"coinAmounts.coinID": req.params.coinId
},
{
'$set': {
'coinAmounts.$.amount': req.body.amount
}
},
function (err, model) {
if (err) {
console.log(err)
return res.send(err)
}
return res.json(model)
})
}]
그러나 이와 같이 배열 금액의 첫 번째 동전 만 업데이트합니다. 그러나
"user": req.params.userId,
줄을 삭제하면
올바른 동전을 찾아 업데이트합니다. 그래도 사용자를 확인해야하는데 어떻게 작동합니까?
검색어 나 데이터의 구성 방식에 문제가 있습니까?
편집 : React-native로 요청을 보냅니다 :
fetch(`${apiBaseURL}/users/${getState().user._id}/coins/${id}/update`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount: getState().coins[id].amount
}),
})
요청이/users/: userID/coins/0/update 인 경우 (금액 : 1) 결과는
{ _id: 5a579d0d44e7390ba3029327,
__v: 0,
coinAmounts:
[ { coinID: 0, amount: 1 },
{ coinID: 1, amount: 0 },
{ coinID: 2, amount: 0 },
{ coinID: 3, amount: 0 },
{ coinID: 4, amount: 0 } ],
user: [ 5a579d0d44e7390ba3029326 ] }
요청이/users/: userID/coins/1/동일한 금액으로 업데이트 된 경우 동일한 결과
하지만 앞에서 언급했듯이 userID 확인을 제거하면/users/: userID/coins/1/update 요청에서 다음을 생성합니다.
{ _id: 5a579d0d44e7390ba3029327,
__v: 0,
coinAmounts:
[ { coinID: 0, amount: 0 },
{ coinID: 1, amount: 1 },
{ coinID: 2, amount: 0 },
{ coinID: 3, amount: 0 },
{ coinID: 4, amount: 0 } ],
user: [ 5a579d0d44e7390ba3029326 ] }
깨끗 했어.
관련 질문
- node.js : $ in 및 부울로 필터링
- node.js : MongoDB와 Mongoose를 연결하는 데 문제가 있습니다.
- javascript : Mongoose .lean () 메서드를 사용한 동등성 테스트 실패
- node.js : Mongoose .save ()는 빈 오류 객체를 반환하고 DB에 저장하지 않습니다.
- node.js : 노드 js가 만든 다른 데이터베이스로 사용자 이름을 어떻게 보내나요?
- javascript : mongodb의 고유 값과 그와 관련된 매개 변수를 계산합니다.
- node.js : Mongoose를 사용하여 모델 내부에있는 문서 배열 내 요소의 ObjectId 찾기
- node.js : MongoDB :"MongoDB Atlas 클러스터 (허용 목록)의 서버에 연결할 수 없습니다."
- javascript : 몽구스 대량 업데이트 작업
- node.js : Mongoose findByIdAndUpdate가 올바른 모델을 반환하지 않음
find
에서 두 개의 배열을 사용할 때 버그처럼 보입니다.$
와 함께 위치 업데이트,user
의 일치하는 인덱스를 얻습니다.$
를 위해 위치 업데이트아래 해결 방법을 시도했지만 둘 다 올바른 coinID를 업데이트합니다
arrayFilters
를 사용하는해결 방법 -1
elemMatch
를 사용하는해결 방법 -2 사용자 배열 용