【问题标题】:Mongoose connect but doesn't record documentsMongoose 连接但不记录文档
【发布时间】:2016-04-16 11:33:32
【问题描述】:

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

// 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 服务上运行。当我启动 express 服务器时,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)

【问题讨论】:

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


    【解决方案1】:

    尝试在 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");
    
    });
    

    【讨论】:

    • 嗨,马克!嗯...@Zanon 回答了我一个类似的问题(但在他删除它之后),但它看起来也不起作用......谢谢你的回答!
    猜你喜欢
    • 2019-12-23
    • 2017-09-17
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2019-10-05
    • 2017-04-28
    相关资源
    最近更新 更多