为什么在数据库返回的节点中未定义值

时间:2017-02-03 07:31:20

标签: javascript node.js nedb

我正在学习nedb和Node.js

这是database.js文件:

// Initialize the database
var Datastore = require('nedb');
db = new Datastore({ filename: 'db/persons.db', autoload: true });

//Returns a specific Person
exports.getPerson = function(id){

  //Get the selected person details from the database
  db.findOne({ _id: id }, function(err, doc){

    console.log(doc);

    //Execute the parameter function
    return doc;

  });
}

现在在我的main.js文件中,我按如下方式调用getPerson函数:

//Get person from the database
var person = database.getPerson(id);

console.log(id);
console.log(person);

document.getElementById('firstname').value = person.firstname;
document.getElementById('lastname').value = person.lastname;

在chrome浏览器的输出窗口中:

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您需要将代码包装回回调。

(未经测试的代码)

//Returns a specific Person
exports.getPerson = function(id,callback){

   //Get the selected person details from the database
   db.findOne({ _id: id }, function(err, doc){

    console.log(doc);

    //Execute the parameter function
    callback(err,doc)

   });
}




var person = database.getPerson(id,function(err,person){

 console.log(id);
 console.log(person);

 document.getElementById('firstname').value = person.firstname;
 document.getElementById('lastname').value = person.lastname;
});