猫鼬 - 强制集合名称

问题描述 投票:103回答:8

我试图用猫鼬创建一个数据库,并在它的集合。我的代码是:

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();

当我运行这段代码,猫鼬创建的集合命名,而不是用户信息的UserInfo。如何强制集合名称獴?

mongodb mongoose
8个回答
177
投票

这应该这样做

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

从更多信息,猫鼬文档见this link


75
投票

如果使用的是猫鼬2.0.0,通过集合名作为第三个参数

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

18
投票

猫鼬将默认的“添加到收藏名称。如果你想避免这种情况,只是通过作为第三个参数的集合的名称:

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();

11
投票

mongoose.model的API结构是这样的:

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

猫鼬是什么做的是,当没有收集参数传递,猫鼬由复数化模型名称产生一个集合名称。如果你不喜欢这种行为,无论是传递一个集合名称,或者设置模式集合名称选项。

例:

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

要么

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

要么

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

9
投票

你需要在你的架构设置的集合名称。

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

9
投票

猫鼬维护者在这里。我们建议做mongoose.model('UserInfo', UserInfo, 'UserInfo');,第三个参数来mongoose.model()是集名称。 Here's the relevant docs


1
投票

回答:

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

语法更好的解释:

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

参数说明:

  • 第一个参数 - 名称型号名称
  • 第二参数[架构]模式名称
  • 第三参数[收集]集合名称(可选,从型号名称诱导的)
  • 第四参数[skipInit]是否跳过初始化(默认为false)

0
投票

型号名称: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);
© www.soinside.com 2019 - 2024. All rights reserved.