我是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();
});
答案 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'});
答案 2 :(得分:2)
此处的复数规则是为了确保特定的命名约定。
集合名称应为复数形式,全部为小写且不留空格。
What are naming conventions for MongoDB?
我认为您应该问自己是否要遵循主要规则(以猫鼬为默认行为保证)或摆脱它。
有哪些津贴?有什么好处?
首先要设计什么是用户(User
模型),然后将users
存储到集合中。完全有道理。
您的通话。
如果您问自己如何在复数后获得集合的最终名称:
const newName = mongoose.pluralize()('User');