I am using this code in order to use mongodb:
var mongo = require("mongodb");
var BSON = mongo.BSONPure;
var server = new mongo.Server('localhost', 27017, {auto_reconnect: true, safe: true});
var db = new mongo.Db('dbname', server);
db.open(function(err, db) {
if(!err) {
console.log("Connected to 'dbname' database");
db.collection("items", {safe:true}, function(err, collection) {
console.log("Open database");
if (err) {
console.log("The 'items' collection doesn't exist. Creating it with sample data.");
var items = [];
for (var i = 0; i < 10; i++) {
items.push({
title: "title" + i,
site_name: "site_name" + i,
url: "url" + i,
type: "type" + i,
image: "image" + i
});
}
db.collection("items", function(err, collection) {
collection.insert(items, {safe:true}, function(err, result) {});
});
}
});
}
});
When I ran the application I get the message:
========================================================================================
= Please ensure that you set the default write concern for the database by setting =
= one of the options =
= =
= w: (value of > -1 or the string 'majority'), where < 1 means =
= no write acknowlegement =
= journal: true/false, wait for flush to journal before acknowlegement =
= fsync: true/false, wait for flush to file system before acknowlegement =
= =
= For backward compatibility safe is still supported and =
= allows values of [true | false | {j:true} | {w:n, wtimeout:n} | {fsync:true}] =
= the default value is false which means the driver receives does not =
= return the information of the success/error of the insert/update/remove =
= =
= ex: new Db(new Server('localhost', 27017), {safe:false}) =
= =
= http://www.mongodb.org/display/DOCS/getLastError+Command =
= =
= The default of no acknowlegement will change in the very near future =
= =
= This message will disappear when the default safe is set on the driver Db =
========================================================================================
What is this message and how can I fix it? Is there any better way to use mongodb?
MongoDB is helpfully instructing you to set default write concern (w) parameter in it's DB settings.
Changing this line should do the trick
var db = new mongo.Db('dbname', server, {w:1});
This will be fine for development/hacking, but you should understand the ramifications of this option before going to production.
Db constructor has three arguments. "DataBaseName", ServerObject, {parameters}.
The message displayed is a warning about the write concern and explains the options you got.
var _mongodb = 'MyDataBase';
var db = new mongodb.Db(_mongodb, server, {w:'majority'});
Reference: http://mongodb.github.io/node-mongodb-native/api-generated/db.html
var MongoClient = require('mongodb').MongoClient, Server = require('mongodb').Server;
var mongoClient = new MongoClient(new Server('localhost', 27017));
db = mongoClient.db("mydb");
db.open(function(err, db) {
if(!err) {
console.log("Connected to 'mydb' database");
db.collection('mycollection', {strict:true}, function(err, collection) {
if (err) {
console.log("error...");
}
});
}
});
Ref: http://mongodb.github.io/node-mongodb-native/api-generated/mongoclient.html
The docs are available at
http://mongodb.github.com/node-mongodb-native/
use the MongoClient interface instead
http://mongodb.github.com/node-mongodb-native/driver-articles/mongoclient.html