J'essaie d'utiliser Mangouste pour créer une base de données et une collection. Mon code est:
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();
Lorsque j'exécute ce code, Mongoose a créé une collection nommée UserInfo au lieu de userinfo . Comment forcer le nom de la collection en mangouste?
Cela devrait le faire
var UserInfo = new Schema({
username : String,
password : String
}, { collection: 'userinfo' });
Voir ce lien de la documentation Mongoose pour plus d'informations.
Si vous utilisez mongoose 2.0.0, passez le nom de collection comme troisième argument
mongoose.model('UserInfo', UserInfo, 'UserInfo');
Mongoose ajoutera 's' au nom de la collection par défaut. Si vous voulez éviter cela, passez simplement comme troisième argument le nom de la collection:
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();
La structure de l'API de mongoose.model est la suivante:
Mongoose#model(name, [schema], [collection], [skipInit])
Qu'est-ce que mangouste fait est que, quand aucun argument de collection n'est passé, Mongoose produit un nom de collection en pluralisant le nom de modèle Si vous n'aimez pas ce comportement, transmettez un nom de collection ou définissez votre option de nom de collection de schémas.
Exemple:
var schema = new Schema({ name: String }, { collection: 'actor' });
ou
schema.set('collection', 'actor');
ou
var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);
Vous devez définir le nom de la collection dans votre schéma.
new Schema({...},{collection: 'userInfo'});
Mainteneur Mongoose ici. Nous vous recommandons de faire mongoose.model('UserInfo', UserInfo, 'UserInfo');
, troisième argument pour mongoose.model()
est le nom de la collection. Voici les documents pertinents .
Réponse:
mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name
Meilleure explication avec la syntaxe:
Mongoose.model(name, [schema], [collection], [skipInit])
Paramètres Explication:
le nom de votre modèle: userInfo.js
dans le fichier de route express ou app.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/testdb');
puis dans votre userInfo.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserInfo = new Schema({
username : String,
password : String
});
module.exports = mongoose.model('UserInfo', UserInfo);