简体   繁体   中英

Looking for Mongoose “hello world” example

Update : Been some time. But back then decided not to use Mongoose. Main reason being that we couldn't really come up with a great reason for using an ORM when using mongo and javascript.


I've been trying to create a database/model with Mongoose which is basically just a user database where the username is unique. Sounds simple enough, but for some reason I've been unable to do so.

What I've got so far is this:

var mongoose = require('mongoose').Mongoose,
    db = mongoose.connect('mongodb://localhost/db');

mongoose.model('User', {
    properties: [
        'name',
        'age'
    ],

    cast: {
        name: String,
        age: Number
    },

    //indexes: [[{name:1}, {unique:true}]],
    indexes: [
        'name'
    ]
    /*,
    setters: {},
    getters: {},
    methods: {}
    */
});    

var User = db.model('User');

var u = new User();
u.name = 'Foo';

u.save(function() {
    User.find().all(function(arr) {
        console.log(arr);
        console.log('length='+arr.length);
    });
});
/*User.remove({}, function() {});*/

It just doesn't work. The database is created alright, but the username is not unique. Any help or knowledge of what I'm doing wrong?

You need to define the schema. Try this: (

var mongoose = require('mongoose').Mongoose,
db = mongoose.connect('mongodb://localhost/db'),
Schema = mongoose.Schema;

mongoose.model('User', new Schema({
    properties: [
        'name',
        'age'
    ],

    [...]
}));    

For Mongoose 2.7 (tested in Node v. 0.8):

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

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

var User = new Schema({
  first_name: String,
  last_name: String
});

var UserModel = mongoose.model('User', User);

var record = new UserModel();

record.first_name = 'hello';
record.last_name = 'world';

record.save(function (err) {

  UserModel.find({}, function(err, users) {

    for (var i=0, counter=users.length; i < counter; i++) {

      var user = users[i];

      console.log( "User => _id: " + user._id + ", first_name: " + user.first_name + ", last_name: " + user.last_name );

    }

  });

});

Try giving right path in var mongoose = require('mongoose').Mongoose,

. It worked for me..

#

my code

require.paths.unshift("/home/LearnBoost-mongoose-45a591d/mongoose"); var mongoose = require('mongoose').Mongoose; var db = mongoose.connect('mongodb://localhost/db'); mongoose.model('User', { properties: ['first name', 'last name', 'age', 'marriage_status', 'details', 'remark'], }); var User = db.model('User'); var record = new User(); record.first name = 'xxx'; record.last name = 'xxx'; record.age = 'xxx'; record.marriage_status = 'xxx'; record.details = 'xxx'; record.remarks = 'xxx'; record.save(function() { User.find().all(function(arr) { console.log(arr); console.log('length='+arr.length); }); }); //User.remove({}, function() {});

Compile it with node filename.js good luck..

Learnboost 最近上传了一组例子https://github.com/LearnBoost/mongoose/tree/master/examples

You should define your unique indexes before running your app for the first time. Otherwise, you need to drop your collection and start over. Also, mongoose will not throw an error when you attempt to save { name: 'user1' } when 'user1' already exists.

I am aware this question is 10 years old and the original poster abandoned Mongoose, but since it pops up near the top of Google searches I felt I would provide a fresh answer.

Providing a complete basic example, using Typescript. I have added comments in the code, where appropriate.

async function mongooseHelloWorld () {
    const url = 'mongodb://localhost/helloworld';

    // provide options to avoid a number of deprecation warnings
    // details at: https://mongoosejs.com/docs/connections.html
    const options = {
        'useNewUrlParser': true,
        'useCreateIndex': true,
        'useFindAndModify': false,
        'useUnifiedTopology': true
    };

    // connect to the database
    console.log(`Connecting to the database at ${url}`);
    await mongoose.connect(url, options);

    // create a schema, specifying the fields and also
    // indicating createdAt/updatedAt fields should be managed
    const userSchema = new mongoose.Schema({
        name:{
            type: String,
            required:true
        },
        email: {
            type: String,
            required: true
        }
    }, {
        timestamps: true
    });

    // this will use the main connection. If you need to use custom
    // connections see: https://mongoosejs.com/docs/models.html
    const User = mongoose.model('User', userSchema);

    // create two users (will not be unique on multiple runs)
    console.log('Creating some users');
    await User.create({ name: 'Jane Doe', email: 'jane.done@example.abcdef' });
    await User.create({ name: 'Joe Bloggs', email: 'jane.done@example.abcdef' });

    // Find all users in the database, without any query conditions
    const entries = await User.find();
    for (let i = 0; i < entries.length; i++) {
        const entry = entries[i] as any;
        console.log(`user: { name: ${entry.name}, email: ${entry.email} }`);
    }
}

// running the code, and making sure we output any fatal errors
mongooseHelloWorld()
    .then(() => process.exit(0))
    .catch(error => {
        console.log(error)
    });

Note, this was validated with Mongoose 5.9.26, running against Mongo 4.0.13.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM