2016-06-12 34 views
1

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

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

如果我不在上面的代码中使用新的会发生什么?即使我没有,代码的流程也是有意义的。纠正我,如果我错了,谢谢。如果你需要创建一个新的实体

+0

阅读[this](http://stackoverflow.com/a/3658673/2607571)了解新的介绍。我不知道在这种情况下,新需求是什么以及它实际上做了什么。 (但我怀疑与继承有关的东西) –

回答

0

new关键字是必要的情况下。

比方说,你想创建你的数据库的新用户。你可以这样做: const user = new 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会为您生成一个新对象。 User.find将返回一个新的对象。由于它已经在数据库中,因此可以更新。

0

我知道它基本上创建我的架构的一个实例。

其实,在你的第一行代码,你所创建的模型,该模型使用架构(不是实例)。在你的最后一行是创建您首次创建模型(这被称为document)的一个实例。

但是当我做更新时,为什么我不需要声明new

你不一定必须使用新的每一次你做数据库调用,但也有它一些好处(见的最后一个环节)

如果我没有在上面使用新代码会发生什么?

同样的事情会发生。

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

A good answer to your question。当我实际在数据库中创建一行时(即,当我创建一个新用户时),我选择创建一个文档。对于搜索(例如)(findOnefindById),我使用该模型。这有助于我保持我的代码在语义上分离。

+0

同样的事情会发生?那么在上述情况下'new'有什么意义?它不需要验证任何东西(根据您提供的链接)。 –

相关问题