2012-08-14 70 views
1
var express = require('express'); 
    var routes = require('./routes'); 
    var socket = require('socket.io'); 
    var fs = require('fs'); 
    var app = module.exports = express.createServer(); 
    var Server = require('mongodb').Server, 
     Db = require('mongodb').Db, 
     Connection = require('mongodb').Connection; 
    var host = 'localhost'; 
    var port = Connection.DEFAULT_PORT; 
    var db = new Db('node-mongo-examples', new Server(host, port, {}), {native_parser:false}); 

    db.open(function(err, db) { 
     console.log('opened'); 
     app.listen(3000); 

    }); 


    db.collection('locations', function(err, collection) { 
      var object= {word:'TEST'}; 
      collection.insert(object, {safe:true}, function(err, result) { 
      var array = collection.findOne({word:'TEST'}, function(err, item) {});    
      console.log(array);// <----always "undefined" 
      });   
    }); 

我嘗試將對象插入到數據庫中。通過每次使用「console.log(array)」,我發現它總是「未定義」。它不能被插入到數據庫中,或者無法從數據庫中找到。我該如何解決它?爲什麼我不能使用node.js將對象插入到mongodb中?

但是,'console.log(item)'顯示'null'。那麼它是否成功插入到數據庫中,或者我應該改變另一種從數據庫中獲取對象的方式。

回答

2

collection.findOne是異步的,所以你不使用函數的返回值;相反,你應該從你的(當前爲空)回調中得到console.log(item)

db.collection('locations', function(err, collection) { 
    var object= {word:'TEST'}; 
    collection.insert(object, {safe:true}, function(err, result) { 
     collection.findOne({word:'TEST'}, function(err, item) { 
      console.log(item); 
     }); 
    });   
}); 
+0

非常感謝。 QQ〜 – MaryHo 2012-08-14 04:35:19

+0

我可以問.....物品現在是空的。我應該如何在該findone函數中添加回調。 – MaryHo 2012-08-15 02:18:55

相關問題