Javascript 何时在mongodb中使用新关键字?
我不清楚node.js中的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,会发生什么?即使
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
有什么意义呢?它不需要验证任何东西(根据您提供的链接)。