简单的猫鼬变量更新节点js
Simple mongoose variable update nodejs
我有猫鼬模式:
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var myItem = new Schema({
apple: String
})
var MyItem = mongoose.model('MyItem', myItem)
如您所见,此模型中只有一个称为 apple 的变量。我想做的是,每次调用方法时,我都希望使用新的苹果值更新架构。例如,苹果值不断变化,因此需要覆盖数据库中的现有值。
也。。。如果苹果还没有在数据库中(即代码第一次运行),我希望它插入它。
这是我所做的:
MyItem.findOneAndUpdate({apple: apple}, {apple: apple}, {upsert: true}, function (error, updatedApple) {
if (error) {
console.log('Error')
}
console.log(updated)
})
但是,这给了我以下结果:
> db.myitems.find()
{ "_id" : ObjectId("578629399a18c920d5e1a988"), "apple" : NaN, "__v" : 0 }
{ "_id" : ObjectId("578629469a18c920d5e1a989"), "apple" : 0, "__v" : 0 }
它应该如何工作:只有在苹果具有不同值时才添加新条目。我希望它只是更新相同的条目 - 所以总会有一个。
因此,例如,当您执行以下> db.myitems.find()
时,您只会看到一个记录在案,而不是两个。所以你要么看到
{ "_id" : ObjectId("578629399a18c920d5e1a988"), "apple" : NaN, "__v" : 0 }
或者你会看到这个:
{ "_id" : ObjectId("578629469a18c920d5e1a989"), "apple" : 0, "__v" : 0 }
而我让它们都回来了,而不仅仅是更新它。
我也尝试将其{new:true}添加到选项中,但是这只会一直返回一个"null"对象
好的,所以我可能错过了一些东西,但如果我不是,我会扩展我的评论。
您似乎始终将筛选器和更新文档设置为相同的值。 这意味着您只会添加记录。 我的意思是:
var apple = 0;
MyItem.findOneAndUpdate({apple: apple}, {apple: apple}, {upsert: true}, function (error, updatedApple) {
if (error) {
console.log('Error')
}
console.log(updated)
})
假设苹果是0,你将尝试找到一个苹果为0的记录,然后更新记录,使苹果等于0(如果有的话;所以这没有变化),否则你将插入一条苹果等于0的新记录。
从您的示例代码中,我希望您实际上正在尝试增加Apple,在这种情况下,需要{$inc : { apple : 1 }}
更新文档(第二个参数)。
否则,您需要维护两个变量;一个用于您正在搜索的苹果值,另一个用于您想要的苹果值(实际上可能是相同的值,但您先验地不知道它们会是相同的值)。
在您的数据库条目示例中,我会做这样的事情(未经测试):var oldApple = NaN;或者您获得搜索值的方式var newApple = 0;
MyItem.findOneAndUpdate({apple: oldApple}, {apple: newApple}, {upsert: true}, function (error, updatedApple) {
if (error) {
console.log('Error')
}
console.log(updated)
})
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 更新从Mysql查询检索到的数据?Node.js节点mysql
- 查找与锁定和更新调度相关的一个或两个节点模块
- 将节点.js更新为 0.12 标头错误
- 节点.js表单更新有和没有 ajax
- Jqgrid Treegrid在更新本地源数据时重新加载节点
- 在节点脚本中,如何监视文件的更改并获取更新的内容
- 节点js可以计算两个输入字段的值并更新另一个字段吗?
- 节点 + MONGO:更新记录需要回调
- 确定元素是否由 JS 添加,还是原始 HTML 文档 *OR* 检测脚本何时通过 InnerHTML 更新节点
- 按钮更新节点.js和 HTML
- D3力定向图:更新节点位置
- InfoVis SpaceTrees:在表单提交后更新节点信息
- 如何使用猫鼬更新节点中的内部文档
- 更新节点在 D3 强制布局中的子元素位置
- Firebase -最快的方式更新节点值与节点值+值
- Ionic Js -更新节点到4.1.1 (Windows)后出现错误
- 如何在Drupal中使用javascript从节点页面更新节点
- 简单的猫鼬变量更新节点js