Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js mongoose保存(来自其网站的示例无效)_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js mongoose保存(来自其网站的示例无效)

Node.js mongoose保存(来自其网站的示例无效),node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有文件要通过mongoose向mongo添加数据: var mongoose = require('mongoose'); var mongoDB = 'mongodb://myuser:mypass@ds145293.mlab.com:45293/employees'; mongoose.connect(mongoDB); mongoose.Promise = global.Promise; var db = mongoose.connection; db.on('error', conso

我有文件要通过mongoose向mongo添加数据:

var mongoose = require('mongoose');
var mongoDB = 'mongodb://myuser:mypass@ds145293.mlab.com:45293/employees';
mongoose.connect(mongoDB);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'))
db.once('open',function(){
    console.log('connected')
    var kittySchema = mongoose.Schema({
        name: String
      });
    var Kitten = mongoose.model('Kitten', kittySchema);
    var fluffy = new Kitten({ name: 'fluffy' });
    fluffy.save(function (err, fluffy) {
        if (err) return console.error(err);
        console.log('saved');
      });
})
mongoose.connection.close()

从mongoose站点复制了几乎一字不差的内容。我可以连接到数据库,但没有第二个控制台日志。我有一个数据库,但没有集合。这是问题吗?

在关闭数据库之前,它无法完成保存。有许多选项可以等待保存。我喜欢异步/等待

编辑:对不起,那太快了。更新的示例

var mongoose = require('mongoose');
var mongoDB = 'mongodb://localhost/something';

async function run() {
    await mongoose.connect(mongoDB);
    console.log('connected')
    var kittySchema = new mongoose.Schema({ name: String }); 
    var Kitten = mongoose.model('Kitten', kittySchema);
    var fluffy = new Kitten({ name: 'fluffy' });
    await fluffy.save();
    console.log('saved');
    mongoose.connection.close();
}

run();
或者,您可以在保存后移动“接近”:

var mongoose = require('mongoose');
var mongoDB = 'mongodb://localhost/something';

mongoose.connect(mongoDB);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'))
db.once('open', function () { 
    console.log('connected')
    var kittySchema = new mongoose.Schema({name: String });
    var Kitten = mongoose.model('Kitten', kittySchema);
    var fluffy = new Kitten({ name: 'fluffy' });
    fluffy.save(function (err, fluffy) {
        if (err) return console.error(err);
        console.log('saved');
        mongoose.connection.close();
    });
})

mongoose.Schema
替换为
new Schema
,我也不认为这
mongoose.Promise=global.Promise
是必需的。

否,如果没有收集,则在保存时将创建一个。好的。知道有什么问题吗?在关闭数据库之前无法完成保存啊,是的,回调函数!现在可以工作了,我只需在回调中移动紧密连接。谢谢!啊哈,这就是我收到IDE警告的原因。不过,它确实没有新功能。它有一个
if(!(模式的这个实例)){返回新模式(obj,options);}
。这已经不是第一次有人试图在没有新的东西的情况下运行它了:而且承诺的东西来自旧的文档,我敢肯定:@ippi你知道得更清楚,先生。我也是在我的MongoDB和mongoose的第一步。请引导。但我认为不需要承诺,所以我说了,是的,可以做到,我只是检查了一下,但现在没有建议。对不起,我不清楚!我的意思是OP一定是从那里得到的,它可能取决于node/mongoose版本。但你是对的!