我不清楚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,会发生什么?即使我没有,代码的流程也是有意义的。如果我错了,请纠正我,谢谢。
答案 0 :(得分:1)
我知道它基本上创建了我的架构的实例。
实际上,在您的第一行代码中,您正在创建模型,使用模式(不是实例)。在最后一行中,您将创建首次创建的模型的实例(称为document)。
但是为什么我在更新时不需要声明
new
?
每次拨打DB电话时都不一定要使用新电话,但它有一些好处(参见最后一个链接)
如果我在上面的代码中没有使用new会发生什么?
同样的事情会发生。
所以我的问题是何时在这里使用新的。
A good answer to your question。当我在数据库中实际创建一行时(即,当我创建一个新用户时),我选择创建一个文档。对于搜索(例如)(findOne
,findById
),我使用该模型。这有助于我保持代码在语义上的分离。
答案 1 :(得分:0)
(0>s?(s=-s,'-'):0)+
关键字。
假设您要在数据库中创建新用户。你可以这样做:
new
然后你有两个选项,你可以在保存之前改变用户对象,或者使用const user = new User({user: id, data})
立即保存它。
像这样:
user.save()
在练习中,您会注意到有时您不希望在创建实体时在DB中保存实体。有时在插入DB之前,您希望使用它执行一些操作。
关于在执行更新之前您不需要使用const user = new User({user: id, data})
user.age = 21;
user.save();
关键字的问题。
因此,要执行更新,首先需要从DB检索现有文档。 new
在这种情况下,Mongoose会为您生成一个新对象。 User.find({id: 'someid'});
会返回一个新对象。由于已经在DB中,因此可以更新。