Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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-Mongoose查询findOneAndUpdate()不';t更新/复制数据库_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript MongoDB-Mongoose查询findOneAndUpdate()不';t更新/复制数据库

Javascript MongoDB-Mongoose查询findOneAndUpdate()不';t更新/复制数据库,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试保存和更新Web Api的结果,该结果包含多个数据数组以填充股票图表。每次我输入一个符号并单击“Get Quote”按钮时,它都应该从web api获取数据,并在数据库的子模式下保存/更新数据。我怎样才能用nodejs和mongoose做到这一点?这是我试过的代码 文件夹-Models-Stock.js const mongoose = require('mongoose') mongoose.Promise = global.Promise mongoose.connect('mon

我正在尝试保存和更新Web Api的结果,该结果包含多个数据数组以填充股票图表。每次我输入一个符号并单击“Get Quote”按钮时,它都应该从web api获取数据,并在数据库的子模式下保存/更新数据。我怎样才能用nodejs和mongoose做到这一点?这是我试过的代码

文件夹-Models-Stock.js

const mongoose = require('mongoose')
mongoose.Promise = global.Promise
mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true })
const slug = require('slug')


const childSchemaData = new mongoose.Schema({
  date: mongoose.Decimal128,
  open: mongoose.Decimal128,
  high: mongoose.Decimal128,
  low: mongoose.Decimal128,
  close: mongoose.Decimal128,
  volume: mongoose.Decimal128
})

const parentSchemaSymbol = new mongoose.Schema({
  symbol: {
    type: String,
    trim: true,
    minlength: 2,
    maxlength: 4,
    required: 'Plese enter a valid symbol, min 2 characters and max 4'
  },
  // Array of subdocuments
  data: [childSchemaData],
  slug: String

});

//we have to PRE-save slug before save the parentSchemaSymbol into DB
parentSchemaSymbol.pre('save', function (next) {
  if (!this.isModified('symbol')) {
    next()//skip it
    return//stop this function from running
  }
  this.slug = slug(this.symbol)
  next()
  //TODO make more resiliant soslug are unique
})

module.exports = mongoose.model('Stock', parentSchemaSymbol)
const mongoose = require('mongoose')
const axios = require('axios')

require('../models/Stock')
const parentSchemaSymbol = mongoose.model('Stock')



mongoose.Promise = global.Promise // Tell Mongoose to use ES6 promises
// Connect to our Database and handle any bad connections
mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true })
mongoose.connection.on('error', (err) => {
  console.error(`Instead of:

curValueSchema.findOneAndUpdate
控制器-webApiController.js

const mongoose = require('mongoose')
mongoose.Promise = global.Promise
mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true })
const slug = require('slug')


const childSchemaData = new mongoose.Schema({
  date: mongoose.Decimal128,
  open: mongoose.Decimal128,
  high: mongoose.Decimal128,
  low: mongoose.Decimal128,
  close: mongoose.Decimal128,
  volume: mongoose.Decimal128
})

const parentSchemaSymbol = new mongoose.Schema({
  symbol: {
    type: String,
    trim: true,
    minlength: 2,
    maxlength: 4,
    required: 'Plese enter a valid symbol, min 2 characters and max 4'
  },
  // Array of subdocuments
  data: [childSchemaData],
  slug: String

});

//we have to PRE-save slug before save the parentSchemaSymbol into DB
parentSchemaSymbol.pre('save', function (next) {
  if (!this.isModified('symbol')) {
    next()//skip it
    return//stop this function from running
  }
  this.slug = slug(this.symbol)
  next()
  //TODO make more resiliant soslug are unique
})

module.exports = mongoose.model('Stock', parentSchemaSymbol)
const mongoose = require('mongoose')
const axios = require('axios')

require('../models/Stock')
const parentSchemaSymbol = mongoose.model('Stock')



mongoose.Promise = global.Promise // Tell Mongoose to use ES6 promises
// Connect to our Database and handle any bad connections
mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true })
mongoose.connection.on('error', (err) => {
  console.error(`Instead of:

curValueSchema.findOneAndUpdate
const mongoose=require('mongoose'))
常量axios=require('axios')
需要(“../models/Stock”)
const parentSchemaSymbol=mongoose.model('Stock')
mongoose.Promise=global.Promise//告诉mongoose使用ES6承诺
//连接到我们的数据库并处理任何错误连接
猫鼬mongodb://localhost:27017/myapp“,{useNewUrlParser:true})
mongoose.connection.on('error',(err)=>{
控制台。错误(`而不是:

parentSchemaSymbol.findOneAndUpdate
做:

而不是:

parentSchemaSymbol.findOneAndUpdate
做:


这是模型的方法,不是实例。
将实例名称替换为方案名称。

这是模型的方法,而不是实例。 将实例名称替换为方案名称

  • findOneAndUpdate和update是一个模型方法,它可用于模型实例,所以您得到的方法是NotFound错误
  • let curValueSchema=new parentSchemaSymbol()
    curValueSchema.symbol=曲线值
    highLow.map(项=>{
    curValueSchema.data.push(项)
    })
    常量查询={
    符号:`${
    curValue.toUpperCase()
    }`
    }
    const update=curValueSchema
    常量选项={
    厄普塞特:没错,
    新:真的
    }
    parentSchemaSymbol.findOneAndUpdate(查询、更新、选项)。然后(doc=>{
    console.log('保存符号',doc)
    返回res.send(高低)
    }).
    捕获(e=>{
    控制台日志(e)
    })
  • findOneAndUpdate和update是一个模型方法,它可用于模型实例,所以您得到的方法是NotFound错误
  • let curValueSchema=new parentSchemaSymbol()
    curValueSchema.symbol=曲线值
    highLow.map(项=>{
    curValueSchema.data.push(项)
    })
    常量查询={
    符号:`${
    curValue.toUpperCase()
    }`
    }
    const update=curValueSchema
    常量选项={
    厄普塞特:没错,
    新:真的
    }
    parentSchemaSymbol.findOneAndUpdate(查询、更新、选项)。然后(doc=>{
    console.log('保存符号',doc)
    返回res.send(高低)
    }).
    捕获(e=>{
    控制台日志(e)
    
    })
    Aha,这是有道理的。但出于同样的原因,它没有像预期的那样工作。它正在插入dumplicate值,而
    pre('save')
    不工作。另外
    const query={symbol:`${curValue.toUpperCase()}}
    不应用
    toUpperCase()
    以避免我需要添加的重复
    “\u id”:false
    对于子模式和父模式,它是有意义的。但出于同样的原因,它没有按预期工作。它正在插入dumplicate值,并且
    pre('save')
    不工作。另外
    const query={symbol:`${curValue.toUpperCase()}`
    不适用
    toUpperCase()
    为了避免重复,我需要向子模式和父模式添加
    “\u id”:false
    ,它是有意义的。但出于同样的原因,它没有按预期工作。它正在插入dumplicate值,而pre('save')不起作用。另外,const query={symbol:
    ${curValue.toUpperCase()}
    }不适用于toUpperCase()为了避免重复,我需要向子模式和父模式添加
    “\u id”:false
    ,这很有意义。但出于同样的原因,它不能像预期的那样工作。它正在插入dumplicate值,而pre('save')不起作用。另外,const query={symbol:
    ${curValue.toupercase()
    }不适用于toupercase()为了避免重复,我需要向子模式和父模式添加
    “\u id”:false
    ,这很有意义。但出于同样的原因,它不能像预期的那样工作。它正在插入dumplicate值,而pre('save')不起作用。另外,const query={symbol:
    ${curValue.toupercase()
    }不适用于toupercase()为了避免重复,我需要向子模式和父模式添加
    “\u id”:false
    ,这很有意义。但出于同样的原因,它不能像预期的那样工作。它正在插入dumplicate值,而pre('save')不起作用。另外,const query={symbol:
    ${curValue.toupercase()
    }不适用于toupercase()为了避免重复,我需要向子模式和父模式添加
    “\u id”:false