Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 猫鼬&x2B;咖啡脚本';默认值';财产——让它发挥作用?_Node.js_Coffeescript_Mongoose - Fatal编程技术网

Node.js 猫鼬&x2B;咖啡脚本';默认值';财产——让它发挥作用?

Node.js 猫鼬&x2B;咖啡脚本';默认值';财产——让它发挥作用?,node.js,coffeescript,mongoose,Node.js,Coffeescript,Mongoose,正如您所知,MongooseJS有一个“默认”属性可用。例如,如果我希望对象上有一个日期属性,并且希望该日期自动默认为创建记录的时间,我会在模式中将其定义为: var myObject = mongoose.Schema({ date: {type: Date, default: Date.now} }); 现在,在CoffeeScript中执行此操作的问题是,default在JavaScript中是一个保留关键字,因此CoffeeScript编译器会自动将default用双引号括起来,因

正如您所知,MongooseJS有一个“默认”属性可用。例如,如果我希望对象上有一个日期属性,并且希望该日期自动默认为创建记录的时间,我会在模式中将其定义为:

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
关键字已经提供了此功能


有人知道如何避免这种情况吗?

我必须承认我讨厌咖啡脚本之类的东西,但你可能会通过这样做来避免这种情况:

var schema = {
   type: Date
};

schema["default"] = Date.now;

myObject = mongoose.Schema(schema);

因此,我的问题的解决方案非常简单,这是一个新手犯的错误:我忘了在myObject.find()中指定要返回的日期属性。

将该键设置为
“default”:
而不是
默认值:
很好,不会阻止它工作。这里还发生了一些事情。你能给我指一些解释吗?我已经将CoffeeScript编译成JS,并手动删除了
default
属性周围的双引号,这似乎是可行的。实际上,我将这些引号添加到Mongoose模式中的
default
键中,以使我的编辑器的JS linter满意,所以我知道它是可行的。更一般地说,这里有一个关于带引号的键和不带引号的键的例子。只有少数边缘案例是不同的。这似乎很有趣,也很有效,但我很好奇JohnnyK对我问题的评论——在我接受答案之前,等待进一步的输入。