我正在用mongodb和mongoose开发一个expressjsapi。
我想在Javascript es6中创建一个对象,该对象由几个变量和猫鼬请求的结果组成,并希望使用es6扩展运算符这样做:
MyModel.findOne({_id: id}, (error, result) => {
if (!error) {
const newObject = {...result, toto: "toto"};
}
});
问题在于应用扩展运算符以wierd方式对其进行结果变换:
newObject: {
$__: {
$options: true,
activePaths: {...},
emitter: {...},
getters: {...},
...
_id: "edh5684dezd..."
}
$init: true,
isNew: false,
toto: "toto",
_doc: {
_id: "edh5684dezd...",
oneFieldOfMyModel: "tata",
anotherFieldOfMyModel: 42,
...
}
}
我有点理解对象结果被猫鼬丰富,以允许与它进行特定的交互,但是当我在这样做之前console.log时,它描绘了一个没有所有这些东西的简单对象。
我不想做欺骗的事。。。结果_博士,因为我抽象了这个部分,它不适合那样。也许有一种方法可以复制一个对象而不需要任何东西。
谢谢你抽出时间。
对于某些人来说,这可能是有帮助的:
const newObject = {
...JSON.parse(JSON.stringify(result)),
toto: "toto"
};
但如果在模式中使用日期、函数、未定义、regExp或无穷大,则会有一些限制
可以使用MongooseDocument.toObject()
方法。它将返回从数据库中获取的底层纯JavaScript对象。
const newObject = {...result.toObject(), toto: "toto"};
您可以阅读有关的更多信息。toObject()
方法。
我对下面这段代码有一个问题: 结果输出让我大吃一惊: 我已经在线检查了Javadoc中的构造函数,没有任何帮助。
主要内容:1.运算符类型可以将操作符定义为告诉系统实施特定操作的符号。 在JavaScript中,有很多运算符,通过使用特定的运算符,可以执行任何特定的任务。运算符在表达式中用于评估不同的操作数。 表达式是一种返回值的语句,表达式包括: 运算符:它负责对操作数执行一些运算。 操作数:它代表数据。 例如:假设像这样的表达式。 在此表达式中,和是操作数,星号()符号是乘法运算符。 1.运算符类型 JavaScript中的运算
主要内容:1.散布运算符和数组操作,2.散布运算符和字符串ES6引入了一个称为散布运算符的新运算符,它由三个点()组成。 它允许迭代器在期望参数超过零的地方扩展。 它赋予从数组中获取参数的特权。 传播()运算符的语法与参数相似,但是完全相反。 让我们了解一下散布运算符的语法。 语法 上面语法中的三个点()是散布运算符,其目标是特定变量中的整个值。 让我们尝试了解散布运算符在不同情况下的用法: 1.散布运算符和数组操作 下面来看看如何使用散布运算符来操纵数
问题内容: 我对条件运算符有些疑惑。考虑以下两行: 为什么f1变为null且第二条语句引发NullPointerException? Langspec-3.0第15.25段说: 否则,第二和第三操作数分别为S1和S2类型。令T1为对S1进行装箱转换所产生的类型,而T2为对S2进行装箱转换所产生的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的
我对条件运算符有点困惑。请考虑以下两行: 为什么f1变成null,而第二条语句抛出NullPointerException? LANSPEC-3.0第15.25段SAIS: 否则,第二和第三操作数的类型分别为S1和S2。设T1是对S1应用装箱转换得到的类型,设T2是对S2应用装箱转换得到的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的结果。
问题内容: 这是我的数据库的快照。 col1和col2都声明为int。 我的ComputedColumn当前添加列1和2,如下所示… 取而代之的是,我的ComputedColumn应该将列1和2(在中间包含 ’-‘ 字符)连接起来,如下所示… 那么,正确的语法是什么? 问题答案: 您可能将计算列定义为。试试吧。 或者,如果您愿意,可以替换为或选择其他长度。