Mungkin ini saatnya, mungkin ini saya tenggelam dalam dokumentasi yang jarang dan tidak dapat membungkus kepala saya di sekitar konsep memperbarui dalam Mongoose :)
Inilah kesepakatannya:
Saya memiliki skema dan model kontak (properti yang diperpendek):
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);
Saya menerima permintaan dari klien, berisi bidang yang saya butuhkan dan menggunakan model saya sebagai berikut:
mongoose.connect(connectionString);
var contact = new Contact({
phone: request.phone,
status: request.status
});
Dan sekarang kita mencapai masalah:
- Jika saya menelepon
contact.save(function(err){...})
saya akan menerima kesalahan jika kontak dengan nomor telepon yang sama sudah ada (seperti yang diharapkan - unik) - Saya tidak dapat memanggil
update()
kontak, karena metode itu tidak ada pada dokumen - Jika saya memanggil pembaruan pada model:
Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
Saya masuk ke loop tak terbatas dari beberapa jenis, karena implementasi pembaruan Mongoose jelas tidak ingin objek sebagai parameter kedua. - Jika saya melakukan hal yang sama, tetapi pada parameter kedua saya melewati array asosiatif dari properti permintaan
{status: request.status, phone: request.phone ...}
itu berfungsi - tetapi kemudian saya tidak memiliki referensi ke kontak tertentu dan tidak dapat menemukancreatedAt
danupdatedAt
sifat - sifatnya.
Jadi intinya, setelah semua saya mencoba: diberi dokumen contact
, bagaimana cara memperbaruinya jika ada, atau menambahkannya jika tidak?
Terima kasih atas waktunya.
pre
untuksave
?