为什么我不能使用node.js将对象插入到MongoDB中?

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)”,我发现它总是“未定义”。 它不能被插入到数据库中,或者无法从数据库中find。 我该如何解决?

但是,'console.log(item)'显示'null'。 那么它是否成功地插入数据库,或者我应该改变另一种方式从数据库中获取对象。

collection.findOne是asynchronous的,所以你不使用函数的返回值; 相反,你应该从你的(当前为空)callback中调用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); }); }); });