Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs mongoose在保存条目后不会返回控制台_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript nodejs mongoose在保存条目后不会返回控制台

Javascript nodejs mongoose在保存条目后不会返回控制台,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我使用控制台中的一小段代码来测试MongoDB数据库中的保存/检索条目。看起来是这样的: var mongoose = require('mongoose'); var models = require('../models'); mongoose.connect('localhost', 'users'); var john = new models.User({ name:'John' }); john.save(function (err, john) { if (err) {

我使用控制台中的一小段代码来测试MongoDB数据库中的保存/检索条目。看起来是这样的:

var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
});
var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
    mongoose.disconnect();
});

在我运行它之后,它会在保存条目时显示名称,然后不会将我返回控制台,也不会显示更多消息。如何让它将我返回控制台?

当保存调用完成后,它会将您返回控制台,但那是在调用回调之前。 如果保存操作需要几分钟,您可以同时继续玩控制台

保存操作完成后,将调用回调函数并将john.name打印到控制台。在REPL中打印到控制台可能有点棘手,因为它是在您正在键入的位置写入的


所以我的猜测是,您认为一切都被阻止了,因为您没有看到提示符>,但事实上它就在那里,它只是那一行上写的console.log。如果您尝试其他命令,它应该仍然可以工作。

一旦完成对save的调用,它会将您返回到控制台,但那是在调用回调之前。 如果保存操作需要几分钟,您可以同时继续玩控制台

保存操作完成后,将调用回调函数并将john.name打印到控制台。在REPL中打印到控制台可能有点棘手,因为它是在您正在键入的位置写入的


所以我的猜测是,您认为一切都被阻止了,因为您没有看到提示符>,但事实上它就在那里,它只是那一行上写的console.log。如果您尝试其他命令,它应该仍然可以工作。

只要数据库连接仍然打开,您的node.js程序就不会退出,因此您需要在完成连接池后关闭连接池,如下所示:

var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
});
var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
    mongoose.disconnect();
});

只要数据库连接仍处于打开状态,node.js程序就不会退出,因此在完成连接池后,您需要关闭连接池,如下所示:

var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
});
var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
    mongoose.disconnect();
});

它应该返回哪些其他消息?它不应该在所有操作结束时自动将我返回控制台吗?它应该返回哪些其他消息?它不应该在所有操作结束时自动将我返回控制台吗?