Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Javascript 何时在mongodb中使用新关键字?_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 何时在mongodb中使用新关键字?

Javascript 何时在mongodb中使用新关键字?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我不清楚node.js中的new关键字。我知道它基本上创建了我的模式的一个实例。但是为什么我在更新时不需要声明new?所以我的问题是什么时候在这里使用new var User = module.exports = mongoose.model('tokens', userSchema); //route endpoint here .. new User({user: user_id, data: data}).save(callback); 如果我在上面的代码中不使用new,会发生什么?即使

我不清楚node.js中的
new
关键字。我知道它基本上创建了我的模式的一个实例。但是为什么我在更新时不需要声明
new
?所以我的问题是什么时候在这里使用
new

var User = module.exports = mongoose.model('tokens', userSchema);
//route endpoint here
..
new User({user: user_id, data: data}).save(callback);

如果我在上面的代码中不使用new,会发生什么?即使我不这样做,代码流也是有意义的。如果我错了,请纠正我,谢谢。

new
关键字是必要的,以防您需要创建新实体

假设您想在数据库中创建一个新用户。您可以这样做:
const user=新用户({user:id,data})
然后有两个选项,您可以在保存前对用户对象进行变异,或者使用
user.save()
立即保存它

像这样:

const user = new User({user: id, data})
user.age = 21;
user.save();
在您的实践中,您会注意到,有时您不希望在创建实体时将其保存在数据库中。有时在插入DB之前,您需要对其执行一些操作

关于为什么在执行更新之前不需要使用
new
关键字的问题

所以要执行更新,首先需要从数据库中检索现有文档
User.find({id:'someid'})在这种情况下,Mongoose将为您生成一个新对象<代码>用户。查找将返回一个新对象。它可以被更新,因为它已经在数据库中

我知道它基本上创建了我的模式的一个实例

实际上,在第一行代码中,您正在创建使用模式(不是实例)的模型。在最后一行中,您正在创建第一次创建的模型的实例(称为a)

但是为什么我在更新时不需要声明
new

您不必每次进行DB调用时都使用new,但它有一些好处(参见最后一个链接)

如果我在上面的代码中不使用new,会发生什么

同样的事情也会发生

所以我的问题是什么时候在这里使用新的


。当我在数据库中实际创建一行时(即,当我创建一个新用户时),我选择创建一个文档。对于搜索(例如)(
findOne
findById
)我使用该模型。这有助于我保持代码在语义上的独立。

请阅读新代码的介绍。我不知道在这种情况下,新的是必要的,它实际上做什么。(但我怀疑与继承有关的事情)同样的事情会发生吗?那么在上述情况下,
new
有什么意义呢?它不需要验证任何东西(根据您提供的链接)。