【发布时间】:2014-03-15 02:06:25
【问题描述】:
如您所知,MongooseJS 有一个可用的“默认”属性。例如,如果我想要我的对象上的 Date 属性,并且我希望该日期自动默认为创建记录的时间,我将在架构中将其定义为:
var myObject = mongoose.Schema({
date: {type: Date, default: Date.now}
});
现在,在 CoffeeScript 中这样做的问题是 default 是 JavaScript 中的保留关键字,所以 CoffeeScript 编译器会自动将 default 用双引号括起来,所以这个 CoffeeScript 代码:
myObject = mongoose.Schema
date:
type: Date
default: Date.now
编译为:
var myObject;
myObject = mongoose.Schema({
date: {type: Date, "default": Date.now}
});
这会导致default 参数无法按预期工作。也许我错过了一些东西,但我尝试过的一切都不起作用。保存记录时我不需要手动设置日期,因为 default 关键字已经提供了此功能。
有谁知道如何解决这个问题?
【问题讨论】:
-
将该密钥作为
"default":而不是default:就可以了,并且不会阻止它工作。这里发生了其他事情。 -
你能给我指出一些解释吗?我已经将 CoffeeScript 编译为 JS 并手动删除了
default属性周围的双引号,它似乎可以工作。 -
我实际上将这些引号添加到我的
defaultMongoose 模式中的键中,以使我的编辑器的 JS linter 满意,所以我知道它有效。更一般地说,这里有一个SO question,关于带引号和不带引号的键。只有少数边缘情况不同。
标签: node.js coffeescript mongoose