Mongoose连接但不记录文档

时间:2016-04-15 09:56:59

标签: angularjs node.js express mongoose mean-stack

我正在研究MEAN应用程序,我正在尝试每隔X秒执行一次更新数据库的作业。但是,作为第一个sprint,我正在尝试在启动快速服务器时启动一些查询(一个用于填充,另一个用于列表)。这是我的代码:

// set up ========================
var express  = require('express');
var app      = express();                               // create our app w/ express
var mongoose = require('mongoose');                     // mongoose for mongodb
[....]
var Schema =  mongoose.Schema;

// configuration =================

// connect to mongoDB database on localhost
var connection = mongoose.createConnection('mongodb://localhost/dv_db_admin');
connection.on('error', console.error.bind(console, 'connection error:'));
connection.once('open', function () {
    console.info('connected to database dv_db_admin')
});

[...express stuff...]

// define model =================
var CountrySchema = new Schema({
    name : String,
    icaoCode : String,
    documents : [String]
});

var Country = mongoose.model('Country', CountrySchema);
var country = new Country({
    name : 'Afghanistan',
    icaoCode : 'AFG',
    documents : []
});

country.save(function(err, country) {
    if (err) console.log("Error:",err);
    console.log("Saved:",country);
});
console.log("After save");
Country.findOne({}, function(err, country) {
    if (err) console.log("Error:",err);
    console.log("Load:",country);
});
console.log("After find");

app.get('*', function(req, res) {
// load the single view file (angular will handle the page changes on the front-end)
    res.sendfile('./public/index.html');
});

// listen (start app with node server.js) ======================================
app.listen(8080);
console.log("App listening on port 8080");

当我启动它时,我有以下日志输出:

C:\Mercurial\DV-DB-Catalog>npm start

> dv-db-catalog@1.0.0 start C:\Mercurial\DV-DB-Catalog
> node server.js

After save
After find
App listening on port 8080
connected to database dv_db_admin

如您所见,没有关于已保存或列表执行的日志。我已经运行了mongo shell并执行show dbs但它没有出现。

有人知道发生了什么吗?

提前致谢!

P.S。:我正在运行后台mongo服务。当我启动快速服务器时,Mongo日志显示以下内容:

2016-04-15T12:00:50.876+0200 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:50766 #71 (3 connections now open)
2016-04-15T12:00:50.877+0200 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:50767 #72 (4 connections now open)
2016-04-15T12:00:50.878+0200 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:50768 #73 (5 connections now open)
2016-04-15T12:00:50.881+0200 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:50769 #74 (6 connections now open)

1 个答案:

答案 0 :(得分:0)

尝试在connection.once回调中将所有调用移至MongoDB。看起来您在连接之前尝试从MongoDB保存/加载数据:

connection.once('open', function () {
    console.info('connected to database dv_db_admin')

    // define model =================
    var CountrySchema = new Schema({
        name : String,
        icaoCode : String,
        documents : [String]
    });

    var Country = mongoose.model('Country', CountrySchema);
    var country = new Country({
        name : 'Afghanistan',
        icaoCode : 'AFG',
        documents : []
    });

    country.save(function(err, country) {
        if (err) console.log("Error:",err);
        console.log("Saved:",country);
    });
    console.log("After save");
    Country.findOne({}, function(err, country) {
        if (err) console.log("Error:",err);
        console.log("Load:",country);
    });
    console.log("After find");

});