【发布时间】:2015-12-08 01:39:25
【问题描述】:
如果我有两个架构,一个将嵌入另一个:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
// Will embed this in the personSchema below
var addressSchema = new Schema({
street: String,
city: String,
state: {
type: String,
uppercase: true
},
zip: Number
});
var personSchema = new Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
emailAddress: {
type: String,
lowercase: true
},
phoneNumber: Number,
address: addressSchema
});
module.exports = mongoose.model("Person", personSchema);
我似乎无法让 uppercase: true 用于嵌入文档 - 不会引发错误,但它根本不会大写 state 属性。或任何类似的选项。
我一直在搜索 Mongoose 文档,但也许我只是没有找到它提到在子文档上设置这些类型的附加选项不起作用的地方。
【问题讨论】:
-
您说:“我似乎无法获取大写:适用于嵌入式文档的 true”但错误是什么?
-
您可以使用的一件事是
Parent.pre("save", function(next){ "make it uppercase here!" })挂钩并“手动”执行(如果您在此期间找不到解决方案)。查看此帖子:stackoverflow.com/questions/14023937/… -
对不起,我不是很明确。没有抛出错误,它只是没有将“状态”大写。我在父架构上对其进行了测试,它工作得很好,我也在子架构上尝试了
lowercase,但无济于事。 -
除了我上面建议的可能性之外,请阅读此post,这可能可以解释为什么它不会变成大写...
-
@nbro 预保存挂钩不起作用,我认为这是因为我没有在 Mongo 自己的集合中保存新的
Child,我只是保存了 @987654328 @。所以我认为Child.pre("save")事件永远不会被触发。还有其他想法吗?我应该用另一个钩子来代替save吗?
标签: node.js mongodb mongoose embedded-documents