Я пытаюсь использовать 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. Как заставить имя коллекции в мангусте?
Это должно сделать это
var UserInfo = new Schema({
username : String,
password : String
}, { collection: 'userinfo' });
Смотрите эту ссылку из документации Mongoose для получения дополнительной информации.
Если вы используете mongoose 2.0.0, передайте имя коллекции в качестве третьего аргумента
mongoose.model('UserInfo', UserInfo, 'UserInfo');
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();
Структура 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);
Вам нужно установить имя коллекции в вашей схеме.
new Schema({...},{collection: 'userInfo'});
Мангуста здесь. Мы рекомендуем делать mongoose.model('UserInfo', UserInfo, 'UserInfo');
третьим аргументом mongoose.model()
является имя коллекции. Здесь соответствующие документы.
Ответ:
mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name
Лучшее объяснение с синтаксисом:
Mongoose.model(name, [schema], [collection], [skipInit])
Параметры Объяснение:
название вашей модели: 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);