2012-04-03 7 views
10

Sadece bir tek aramayla bir mongodb için JSON nesnesinin bir dizisini kaydetmenin bir yolu var mı? gibi bir şey:Tek bir aramayla DB'yi mongoose nesnesine nasıl kaydedebilirim?

schemeObject.save(array_of_json_object, callback); 

ben mongooosejs ile olası sanmıyorum mongoosejs

+0

Eğer doğru cevabı güncelleyin Can yanı firavunfaresi ile çalışır? –

+0

@IcyFlame Bağlantılı postanız teknik olarak bunun kopyasıdır. –

+0

@DanMandle sağa! Tarihleri ​​fark etmedim. İşaret ettiğin için teşekkürler. – IcyFlame

cevap

0

Nasıl böyle bir şey? Ben

var arr = // array of objects; 
    res = []; 

arr.forEach(function (item) { 
    item.save(function (err) { 
     res.push(err); 
     if (res.length === arr.length) 
     { 
      // Done 
     } 
    }); 
}); 
+0

Eğer tek tek bir toplu iş parçacığı olacaksa, bunu tek tek yapın! – JehandadK

23

yoktur .. .. o tüm dizi boyunca döngüleri biliyorum bunun için Big O bana sorma .. muhtemelen eklemek için en iyi yolu ama bir tür sadece bir başlangıç ​​veri dökümü için çalışıyor MongooseJS ile toplu yerleştirmenin bir yolu. Bu soruyu sorduğumdan/cevaplandırdığımdan beri yeni bir özellik olup olmadığından emin değilim, ama birisinin bir aramadan buraya gelip gelmeyeceğini anladım, bunu yapmanın yolunu bilmeliler. Ben kullandım http://mongoosejs.com/docs/api.html#model_Model.create

+3

Yeni dokümanlar oluşturmak istiyorsak bu işe yarayacak. Bir sorgudan dönen bir diziyi veya dokümanları güncellemeye ne dersiniz? – jAckOdE

+0

Bunun için, sonuçta bir find() sonra bir forEach() yapmanız, değerleri güncellemeniz ve her biri için bir kaydetme() yapmanız gerekir. Ama ben Mongoose için kendimden çok yeniim. –

0

başka bir geçici çözüm:

var array = [{ type: 'jelly bean' }, { type: 'snickers' }]; 
Candy.create(array, function (err, jellybean, snickers) { 
    if (err) // ... 
}); 

İşte belgeler bulunmaktadır. Sözlerle mongoose kullanıyorsanız, bunu Q kullanarak yapabilirsiniz.

Aşağıdaki kodu kullanarak firavunfaresi için varsayılan vaadi olarak Q kullanmaya başlayabilirsiniz:

const mongoose = require('mongoose'); 
mongoose.Promise = require('q').Promise; 

Sonra aşağıda gibi belgelerin bir dizi kaydedebilirsiniz. users değişkeninde gösterdiğim bir dizi Kullanıcı modelini saklı tutuyoruz.

Q 
    .all(users.map(curr => curr.save())) 
    .then((results) => { //do something }) 
    .catch((err) => { //handle error }) 

.save() bir q söz ve dizi map işlevini kullanarak, biz kullanıcı modelleri dizisi kullanarak bir söz dizisi oluşturacağız dönecektir.

0

Bu

Laptop.insertMany(laptopData, function (err, laptop) { 
    if (err) { 
    console.log(err); 
    }; 
    console.log(laptop); 
}); 
İlgili konular