아마도 그것은 아마도 시간 일 것입니다. 아마도 스파 스 문서에 빠져 익사하고 몽구스의 업데이트 개념에 대해 머리를 감쌀 수 없습니다 :)
거래는 다음과 같습니다.
연락처 스키마 및 모델이 있습니다 (속성 단축).
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var mongooseTypes = require("mongoose-types"),
useTimestamps = mongooseTypes.useTimestamps;
var ContactSchema = new Schema({
phone: {
type: String,
index: {
unique: true,
dropDups: true
}
},
status: {
type: String,
lowercase: true,
trim: true,
default: 'on'
}
});
ContactSchema.plugin(useTimestamps);
var Contact = mongoose.model('Contact', ContactSchema);
필요한 필드가 포함 된 클라이언트로부터 요청을 받고 모델을 다음과 같이 사용합니다.
mongoose.connect(connectionString);
var contact = new Contact({
phone: request.phone,
status: request.status
});
이제 우리는 문제에 도달합니다.
- 내가 전화하면
contact.save(function(err){...})
같은 전화 번호를 가진 연락처가 이미 존재하는 경우 오류가 발생합니다 (예상대로-고유) - 나는 전화 할 수 없다
update()
해당 방법이 문서에 없기 때문에 연락 - 모델에서 업데이트를 호출하면 :
Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
하면 몽구스 업데이트 구현에서 객체를 두 번째 매개 변수로 원하지 않기 때문에 어떤 종류의 무한 루프에 빠지게됩니다. - 내가 똑같이하지만 두 번째 매개 변수에서 요청 속성의 연관 배열을 전달하면
{status: request.status, phone: request.phone ...}
작동하지만 특정 연락처에 대한 참조가 없으며 해당 속성createdAt
과updatedAt
속성을 찾을 수 없습니다 .
결론적으로, 내가 시도한 모든 결론 : document가 주어지면 문서를 contact
업데이트하거나 그렇지 않으면 어떻게 추가합니까?
시간 내 줘서 고마워.
pre
위해save
?