Mongoose - название коллекции Force

Я пытаюсь использовать mongoose для создания базы данных и коллекции. Мой код:

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

    var UserInfo = new Schema({
    username : String,
    password : String 
    });

    mongoose.model('UserInfo', UserInfo);

    var user = db.model('UserInfo');


    var admin = new user();
    admin.username = "sss";
    admin.password = "ee";
    admin.save();

Когда я запускаю этот код, mongoose создал коллекцию с именем UserInfo вместо userinfo. Как заставить имя коллекции в мангусте?

Ответ 1

Это должно сделать это

var UserInfo = new Schema({
  username : String,
  password : String 
}, { collection: 'userinfo' });

Смотрите эту ссылку из документации Mongoose для получения дополнительной информации.

Ответ 2

Если вы используете mongoose 2.0.0, передайте имя коллекции в качестве третьего аргумента

mongoose.model('UserInfo', UserInfo, 'UserInfo');

Ответ 3

Mongoose добавит 's' к имени коллекции по умолчанию. Если вы хотите избежать этого, просто передайте в качестве третьего аргумента имя коллекции:

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

var UserInfo = new Schema({
    username: String,
    password: String 
});

mongoose.model('UserInfo', UserInfo, 'UserInfo')

tan = new user();
admin.username = 'sss';
admin.password = 'ee';
admin.save();

Ответ 4

Структура API mongoose.model такова:

Mongoose#model(name, [schema], [collection], [skipInit])

Что такое мангуста, так это: Когда аргумент коллекции не передан, Mongoose создает имя коллекции, плюризуя имя модели. Если вам не нравится это поведение, либо передайте имя коллекции, либо укажите опцию имени коллекции схем.

Пример:

var schema = new Schema({ name: String }, { collection: 'actor' });

или

schema.set('collection', 'actor');

или

var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);

Ответ 5

Вам нужно установить имя коллекции в вашей схеме.

new Schema({...},{collection: 'userInfo'});

Ответ 7

Ответ:

mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name

Лучшее объяснение с синтаксисом:

Mongoose.model(name, [schema], [collection], [skipInit])

Параметры Объяснение:

  • 1-й параметр - название модели
  • Имя схемы второго параметра [схема]
  • Имя коллекции 3-го параметра [коллекция] (необязательно, определяется именем модели)
  • 4-й параметр [skipInit] пропустить ли инициализацию (по умолчанию false)

Ответ 8

название вашей модели: userInfo.js

в файле экспресс-маршрута или app.js

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

тогда в вашем userInfo.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserInfo = new Schema({
 username : String,
 password : String 
});
module.exports = mongoose.model('UserInfo', UserInfo);