2013-12-10 4 views
0

Я пытаюсь настроить mongodb на windows 8 с помощью node.js, Кто-нибудь знает, почему я получаю эту ошибку. C: \ users \ phill \ node_modules \ mongodb \ lib \ mongodb \ mongo_client.js: 359 он также говорит в коллекции collection = db ,,, не может вызвать метод 'collection' null. Мне сложно настроить его. Моя цель - добавить в mongo db и увидеть, что я добавляю или подтягиваю то, что я добавил, но добавление чего-то для меня сейчас достаточно. Я пытаюсь найти все, что могу, даже прямо с веб-сайта, я попробовал все, что я вижу здесь. Подумайте, возможно, это так, как у меня есть вещи. Мой node.js сохраняется в моем диске c: есть файл, который говорит, программные файлы (86x) там, у меня есть node_modules, npm и т. Д. Путь заканчивается: computer> windows (C :)> программные файлы (86x)> nodejs. Мой Mongodb сохраняется прямо на моем диске C: путь заканчивается тем, что он является окном (C :)> mongodb-win32-x86_64-2008plus-2.4.8. В моем C: я также создал данные файла и в нем создал другой db. Мне сказали, что я должен просто использовать мангуст, я просто учился, поэтому открываю любые советы, ссылки или что-то, что поможет. У меня тоже есть последний вопрос, я узнал php, а затем узнал о SQL-инъекциях и тому подобном, я вообще ничего не вижу о безопасности, должен ли я ожидать того же самого. Для этого я получаю текст не определен, но я получаю ошибки с everthing я сделал, лучше всего я сделал застрял на правильный экран озабоченность.Node.js и mongodb acces mongodb

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

MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, db) { 
test.equal(null, err); 
test.ok(db != null); 

db.collection("replicaset_mongo_client_collection").update({a:1},   
{b:1}, {upsert:true},   function(err, result) { 
test.equal(null, err); 
test.equal(1, result); 

db.close(); 
test.done(); 
}); 
}); 

Пробовал это так и получаю ошибку, C: \ Users \ Филл \ node_modules \ MongoDB \ Lib \ MongoDB \ mongo_client.js: 359 .... при КОЛЛЕКЦИЯ = дб ,,, может» t вызов метода 'collection' из null. im, вызвав его в командной строке node filename.js. Я сохраняю его там, где находится файл node.js, я до этого делал файлы до и создавал сервер.

var Db = require('mongodb').Db, 
MongoClient = require('mongodb').MongoClient, 
Server = require('mongodb').Server, 
ReplSetServers = require('mongodb').ReplSetServers, 
ObjectID = require('mongodb').ObjectID, 
Binary = require('mongodb').Binary, 
GridStore = require('mongodb').GridStore, 
Grid = require('mongodb').Grid, 
Code = require('mongodb').Code, 
BSON = require('mongodb').pure().BSON, 
assert = require('assert'); 

var db = new Db('test', new Server('localhost', 27017)); 
// Fetch a collection to insert document into 
db.open(function(err, db) { 
var collection = db.collection("simple_document_insert_collection_no_safe"); 
// Insert a single document 
collection.insert({hello:'world_no_safe'}); 

// Wait for a second before finishing up, to ensure we have written the item to disk 
setTimeout(function() { 

// Fetch the document 
collection.findOne({hello:'world_no_safe'}, function(err, item) { 
assert.equal(null, err); 
assert.equal('world_no_safe', item.hello); 
db.close(); 
}) 
}, 100); 
}); 

ответ

0

В первом примере кода, вы сказали:

Для этого я получить текст не определен

Я предполагаю, что вы имели в виду "тест не определен?" Для вашего скрипта требуется только библиотека mongodb, и я не верю, что test является основной функцией nodejs, поэтому это объясняет ошибку.

Для ссылки на документацию на драйвер для db.collection(), используется библиотека assert, но также правильно импортирована (как и в вашем втором примере).

В вашем обратном вызове db.open() вы не проверяете, произошла ли ошибка. Это может пролить свет на то, почему db имеет значение null в этой функции.

В отношении вашего вопроса об эквиваленте SQL-инъекции с MongoDB основными областями, вызывающими озабоченность, являются места, где вы могли бы передать ненадежный ввод в оцененный JavaScript или использовать такой ввод для построения объектов запроса свободной формы (не просто используя строку , но больше похоже на удаление объекта в запрос BSON). Обе эти ссылки должны предоставить более подробную информацию по данной теме:

+0

спасибо, вид получил это работает через экспресс. Все еще не смотрели на безопасность, но ответчик будет читать ваши ссылки! TY! – user3081020