2013-01-18 13 views
15

Próbuję wstawić dokument do MongoDB w pliku Node.js. Z powodzeniem odczytałem dane z bazy danych i dodałem dokumenty za pomocą interfejsu wiersza poleceń. Jednak nie mogę wstawić dokumentu z JavaScript. Jeśli robię, dostaję błąd:Błąd podczas wstawiania dokumentu do MongoDB przez Node.js

Error: Cannot use a writeConcern without a provided callback

Oto mój kod:

var mongodb = require("mongodb"); 
var MongoClient = mongodb.MongoClient; 

MongoClient.connect("mongodb://localhost:27017/test", function(err, db) { 
     if (!err) { 
      db.collection("test").insert({ str: "foobar" }); 
     } 
    }); 

nie mogę dla życia mnie dowiedzieć się, dlaczego ten błąd.

Co zrobiłem źle i jak mam to zrobić zamiast tego?

Odpowiedz

43

Musisz podać funkcję zwrotną na wezwanie insert tak, że metoda może komunikować się jakieś błędy, które występują w czasie z powrotem do Ciebie wkładki.

db.collection("test").insert({ str: "foobar" }, function (err, inserted) { 
    // check err... 
}); 

Lub, jeśli naprawdę nie obchodzi, czy wkładka powiedzie czy nie, przekazać wartość zapisu dotyczą 0 w parametrze opcje:

db.collection("test").insert({ str: "foobar" }, { w: 0 }); 
+2

Dzięki, wydaje się działać. Czy możesz wskazać mi dokumentację do tego? Wszystkie przykłady, które znalazłem, nie wydają się być dla węzła. Nie mogę znaleźć żadnych przykładów, które działają tak jak są. –

+3

To, co robisz, to to, że zanim wprowadzono 'MongoClient', cały przykładowy kod zwykle używał połączeń, w których tryb bezpiecznego zapisu był domyślnie wyłączony, i w takim przypadku twój kod by zadziałał. Ale 'MongoClient' domyślnie włącza tryb bezpieczny. Zauważ, że przykład w 'insert' [docs] (http://mongodb.github.com/node-mongodb-native/api-generated/collection.html#insert) zauważa, że ​​nie używa trybu awaryjnego. – JohnnyHK

Powiązane problemy