如何将文档添加到Mongodb中的集合?

时间:2013-03-30 11:45:46

标签: mongodb

我一直在关注Mongo数据库,并且正在努力获得正确的基础知识。

以下代码似乎可以在Mac上运行,但在Windows上不起作用。我在Windows上没有错误。如果我将用户名/密码更改为错误的组合,我会收到错误消息。当代码没有问题但根本没有在数据库中创建集合时,它根本不提供任何输出,而我希望有一个名为things

我在.\node_modules\mongoose\examples中的示例中运行了代码并且运行正常。我还尝试将代码放在thing\index.js data.js内,以防万一模块导致问题,但行为没有变化。我做错了什么?

这是我的示例代码:

data.js

var loremIpsum = require('lorem-ipsum'),
    mongoose = require('mongoose'),
    Thing = require('./thing');

mongoose.connect('mongodb://username:password@localhost/Test', function (err) {
    if (err) {
        throw err;
    }

    createData();
})

function createData() {
    Thing.model.create({
        id: 1,
        name: loremIpsum({
            count: 5,
            units: 'words',
            format: 'plain'
        }),
        description: loremIpsum({
            count: 100,
            units: 'words',
            format: 'plain'
        })
    }, function (err, thing) {
        if (err) {
            throw err;
        }

        console.log(thing.name);
    });

    mongoose.disconnect();
}

事/ index.js

var mongoose = require('mongoose');

var thingSchema = mongoose.Schema({
    id: {
        type: Number,
        min: 1
    },
    date: {
        type: Date,
        default: Date.now
    },
    name: {
        type: String,
        trim: true
    },
    description: {
        type: String,
        trim: true
    }
});
var thingModel = mongoose.model('Thing', thingSchema);

exports.schema = thingSchema;
exports.model = thingModel;

1 个答案:

答案 0 :(得分:0)

小学生错误!我要离开这里寻找其他新手了!

基本上,我的代码在创建有机会完成之前断开连接。这就是回调永远不会被调用的原因。 *facepalm*

<强> data.js

var loremIpsum = require('lorem-ipsum'),
    mongoose = require('mongoose'),
    Thing = require('./thing');

mongoose.connect('mongodb://username:password@localhost/Test', function (err) {
    if (err) {
        throw err;
    }

    createData();
})

function createData() {
    Thing.model.create({
        id: 1,
        name: loremIpsum({
            count: 5,
            units: 'words',
            format: 'plain'
        }),
        description: loremIpsum({
            count: 100,
            units: 'words',
            format: 'plain'
        })
    }, function (err, thing) {
        if (err) {
            throw err;
        }

        console.log(thing.name);

        // this goes here...
        mongoose.disconnect();
    });

    // this does not go here...
    // mongoose.disconnect();
}