【问题标题】:Having Trouble Creating a MongoDB Database with Mongoose使用 Mongoose 创建 MongoDB 数据库时遇到问题
【发布时间】:2017-04-30 04:04:58
【问题描述】:

我正在尝试使用 npm Mongoose 和 Robomongo 作为我的 GUI 在 MongoDB 中创建一个数据库。我在http://mongoosejs.com/docs/index.html 关注了 MongoDB 快速入门文档,但数据库没有出现在 Robomongo 中。基本上,当我通过 Node 运行 server.js 文件时,我只是想让数据库“出现”在 Robomongo 中。

当我从 MongoDB 快速入门文档中输入以下代码时,Robomongo 中没有创建/出现任何数据库。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  // we're connected!
});

var kittySchema = mongoose.Schema({
    name: String
});

var Kitten = mongoose.model('Kitten', kittySchema);

但是…… 当我将employeeid 字段(如下)添加到Schema 中时,数据库会出现在Robomongo 中。 有人可以解释这两段代码之间的区别吗?为什么一个有效而另一个无效?

var kittySchema = mongoose.Schema({
    name: {type: String},
    employeeid:{
        type: Number,
        unique: true,
        required: true

    }
});

【问题讨论】:

    标签: node.js mongodb express mongoose schema


    【解决方案1】:

    这是因为employeeid 上有一个索引(至少来自unique——也可能是required?不是100% 确定猫鼬如何处理必填字段)。 Mongoose 会自动创建定义了索引的集合。

    否则,将在您使用它“做”某事后创建集合(例如创建Kitten 并使用.save())。

    【讨论】:

    • 天哪,你说得对!我使用了 .save() 函数,它最终在数据库中创建了只有 name 属性的集合。直到我保存它才出现。在过去的 3 个小时里,我认真地试图弄清楚这一点。谢谢!!
    • 没问题 - 这有点不直观,但 mongodb 也是这样处理它的。例如,当使用 mongo 命令行时,您可以切换到一个数据库,并选择它,但该数据库在您插入之前不会存在——尽管您已经选择了它。在 mongodb 问题跟踪器中有一些额外的阅读 here(请参阅底部的 cmets)。
    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2022-01-15
    • 2020-09-25
    • 2020-04-05
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多