2016-11-17 2 views
0

Я не могу получить простейший пример работы NeDB. Мой код работает только в памяти, постоянство файла продолжает сбой без сообщений об ошибках.NeDB не загружается и не сохраняется в файл

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

Вот код:

var Datastore = require('nedb'), db = new Datastore({ filename: 'test.db' }); 
 

 
db.loadDatabase(function (err) { 
 
    alert(err); // err is null, with the autoload flag no error is thrown either 
 
}); 
 

 
var doc = { hello: 'world'}; 
 

 
db.insert(doc, function (err, newDoc) { 
 
    alert(err); // err is null here as well. Doc will be in the memory storage but no persisted to file 
 
});

+0

он работает нормально. во всех случаях. –

+0

Я столкнулся с таким же вопросом после создания электронного пакета. –

ответ

0

Хотя этот вопрос довольно старый, я хотел бы поделиться своим опытом для тех, кто сталкивается с аналогичной проблемой.

  1. NeDB API не позволяет вводить JSON. Вы должны добавить объект javascript. Когда вы используете вход JSON, ошибка не возвращается и ничего не будет сохранено.
  2. «null» возвращается как ошибка в обратном вызове, чтобы сигнализировать о том, что проблема не возникла. При сохранении первого документа JSON он индексируется с помощью ключа «undefined», потому что NeDB вызывает «key = obj [fieldname [0]]», который возвращает «undefined», когда obj - это просто строка (JSON). К сожалению, ошибки не возвращаются. Вставка второго документа вызовет в обратном вызове уникальную ошибку нарушения ограничений, поскольку ключ «undefined» уже выполнен. Во всяком случае, ничего не останется.

Попробуйте

var Datastore = require('nedb'), db = new Datastore({ filename: 'test.db' }); 
 

 
db.loadDatabase(function (error) { 
 
    if (error) { 
 
     console.log('FATAL: local database could not be loaded. Caused by: ' + error); 
 
     throw error; 
 
    } 
 
    console.log('INFO: local database loaded successfully.'); 
 
}); 
 

 
// creating the object with new, just to make it clear. 
 
// var doc = {hello: 'world'}; should work too. 
 
function myDoc(greeting) 
 
{ 
 
    this.hello=greeting; 
 
} 
 
var doc = new myDoc('world'); 
 

 
db.insert(doc, function (error, newDoc) { 
 
    if (error) { 
 
    console.log('ERROR: saving document: ' + JSON.stringify(doc) + '. Caused by: ' + error); 
 
    throw error; 
 
    }  
 
    console.log('INFO: successfully saved document: ' + JSON.stringify(newDoc)); 
 
});

Может быть, это поможет кому-то. :)

Смежные вопросы