什么是Mongoose(Nodejs)复数规则?

时间:2011-08-29 13:42:26

标签: node.js mongodb mongoose

我是Node.js,Mongoose和Expressjs的新手。我试图通过以下代码在MongoDB中使用Mongoose创建一个表“feedbackdata”。但它被创建为“feedbackdata * s *”。通过谷歌搜索,我发现Mongoose使用复数规则。有人请帮我删除复数规则吗?或者我的代码应该如何用于“feedbackdata”表?

以下是我的代码:

app.post("/save",function(req,res){

mongoose.connect('mongodb://localhost/profiledb');

mongoose.connection.on("open", function(){
    console.log("mongo connected \n");
});

// defining schemar variables
Schema = mongoose.Schema,   
ObjectId = Schema.ObjectId;

// define schema for the feedbackdata table
var feedback_schema = new Schema({
    _id: String,
    url:String,
    username:String,
    email:String,
    subscribe:String,
    types:String,
    created_date: { type: Date, default: Date.now },
    comments: String
});

// accessing feeback model object
var feedback_table = mongoose.model('feedbackdata', feedback_schema);
var tableObj = new feedback_table();

var URL = req.param('url');
var name = req.param('name');
var email = req.param('email');
var subscribe = req.param('subscribe');
var choices = req.param('choices');
var html = req.param('html');
var receipt = req.param('receipt');    
var feedbackcontent = req.param('feedbackcontent');

tableObj._id = 3;
tableObj.url = URL;
tableObj.username = name;
tableObj.email = email;
tableObj.subscribe = subscribe;
tableObj.types = choices;
tableObj.comments = feedbackcontent;

tableObj.save(function (err){
    if(err) { throw err; }else{ 
        console.log("Saved!");              
    }
    mongoose.disconnect();
})

res.write("<div style='text-align:center;color:green;font-weight:bold;'>The above values saved successfully! <br><a href='/start'>Go back to feedback form</a></div>");     

res.end();

});

3 个答案:

答案 0 :(得分:17)

复数规则在此文件中:https://github.com/LearnBoost/mongoose/blob/master/lib/utils.js

您可以将架构名称添加到'uncountables'列表中,然后mongoose不会复制您的架构名称。

答案 1 :(得分:8)

在创建架构对象时,在选项中提供集合的名称,然后Mongoose不会复制您的架构名称。

e.g。

var schemaObj = new mongoose.Schema(
{
 fields:Schema.Type
}, { collection: 'collection_name'});

更多信息:http://mongoosejs.com/docs/guide.html#collection

答案 2 :(得分:2)

此处的复数规则是为了确保特定的命名约定。

集合名称应为复数形式,全部为小写且不留空格。

What are naming conventions for MongoDB?


我认为您应该问自己是否要遵循主要规则(以猫鼬为默认行为保证)或摆脱它。

有哪些津贴?有什么好处?

首先要设计什么是用户(User模型),然后将users存储到集合中。完全有道理。

您的通话。


如果您问自己如何在复数后获得集合的最终名称:

const newName = mongoose.pluralize()('User');