通过 Mongoose 将 JSON 数据发送到 MongDB



我目前有一个JSON对象,我无法通过猫鼬将其保存到mongoDB数据库。我有两个主要问题。

  1. 我的模型是否为下面的 JSON 对象正确设置?我以前从未使用过子文档,所以这是第一次。
  2. 当我尝试保留数据时,我不断收到错误(错误:"对象不是函数")。 我做错了什么?

所有代码如下。

这是我设置猫鼬的方式。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/yjs');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'mongodb connection error:'));
var Schema = mongoose.Schema;
var resultsSchema = new Schema({
    jobtitle: String,
    company: String,
    city: String,
    state: String,
    country: String,
    formattedLocation: String,
    source: String,
    date: String,
    snippet: String,
    url: String,
    onmousedown: String,
    jobkey: String,
    sponsored: Boolean,
    expired: Boolean,
    indeedApply: Boolean,
    formattedLocationFull: String,
    formattedRelativeTime: String
});
var jobSchema = new Schema({
    version: Number,
    query: String,
    location: String,
    dupefilter: Boolean,
    highlight: Boolean,
    radius: Number,
    start: Number,
    end: Number,
    totalResults: Number,
    pageNumber: Number,
    results: [resultsSchema]
});

var Jobs = mongoose.model('Jobs', jobSchema);
module.exports = {
    Jobs: Jobs
}

这是我的 JSON 对象:

{
  version: 2,
  query: "javascript $19,900-$20,900",
  location: "New York, NY",
  dupefilter: true,
  highlight: true,
  radius: 25,
  start: 1,
  end: 3,
  totalResults: 3,
  pageNumber: 0,
  results: [
    {
      jobtitle: "Web Application Developer",
      company: "Sogeti",
      city: "New York",
      state: "NY",
      country: "US",
      formattedLocation: "New York, NY",
      source: "Sogeti",
      date: "Sat, 15 Nov 2014 08:50:24 GMT",
      snippet: "Roles/ Responsibility/ Qualifications: Position Location: Raritan, New Jersey Sogeti is a leading provider of technology and software testing, specializing...",
      url: "http://www.indeed.com/viewjob?jk=5c3af4fc30704f52&qd=PgQusJx_gGiiAmACeKxgepvuLa6C1I07uk43fDZ3DSq8GvDGPvLAOvUmXryxs9bezoA6A_gJOaAYR60u2fV5hFgosDLOUjUrxWWMfxXcFW0txtBb9O5egndMhGuvOU46RMGL25yEMtQuUuTH37UmVA&indpubnum=9222093808317380&atk=19g75527l0np13ao",
      onmousedown: "indeed_clk(this, '2276');",
      jobkey: "5c3af4fc30704f52",
      sponsored: false,
      expired: false,
      indeedApply: false,
      formattedLocationFull: "New York, NY",
      formattedRelativeTime: "30+ days ago"
    },
    {
      jobtitle: "Interactive Designer – New York",
      company: "Unruly Ltd",
      city: "New York",
      state: "NY",
      country: "US",
      formattedLocation: "New York, NY",
      source: "Unruly Ltd",
      date: "Fri, 28 Nov 2014 00:05:17 GMT",
      snippet: "WANTED: Positioned at the intersect of the three fastest-growing trends in digital advertising – programmatic, video and mobile – Unruly is a high-growth tech",
      url: "http://www.indeed.com/viewjob?jk=98f978c3e33061d1&qd=PgQusJx_gGiiAmACeKxgepvuLa6C1I07uk43fDZ3DSq8GvDGPvLAOvUmXryxs9bezoA6A_gJOaAYR60u2fV5hFgosDLOUjUrxWWMfxXcFW0txtBb9O5egndMhGuvOU46RMGL25yEMtQuUuTH37UmVA&indpubnum=9222093808317380&atk=19g75527l0np13ao",
      onmousedown: "indeed_clk(this, '2276');",
      jobkey: "98f978c3e33061d1",
      sponsored: false,
      expired: false,
      indeedApply: true,
      formattedLocationFull: "New York, NY",
      formattedRelativeTime: "30+ days ago"
    },
    {
      jobtitle: "Java Angular JS Developer",
      company: "UST Global",
      city: "Edison",
      state: "NJ",
      country: "US",
      formattedLocation: "Edison, NJ",
      source: "Dice",
      date: "Wed, 18 Feb 2015 14:06:16 GMT",
      snippet: "Rakesh.Sasidharanust-global.com <b>Javascript</b>, Angular JS, JQuery, Ext. Java Angular JS Developer 5 years experience in Java and web development Should have...",
      url: "http://www.indeed.com/viewjob?jk=f347ca5dc7439231&qd=PgQusJx_gGiiAmACeKxgepvuLa6C1I07uk43fDZ3DSq8GvDGPvLAOvUmXryxs9bezoA6A_gJOaAYR60u2fV5hFgosDLOUjUrxWWMfxXcFW0txtBb9O5egndMhGuvOU46RMGL25yEMtQuUuTH37UmVA&indpubnum=9222093808317380&atk=19g75527l0np13ao",
      onmousedown: "indeed_clk(this, '2276');",
      jobkey: "f347ca5dc7439231",
      sponsored: false,
      expired: false,
      indeedApply: false,
      formattedLocationFull: "Edison, NJ 08817",
      formattedRelativeTime: "22 days ago"
    }
  ]
}

我如何尝试持久化数据:

var job = new Jobs(json_object);
Jobs.create(json_object, function (err, job) {
    if (err) return handleError(err);
    return job();
});

任何指导将不胜感激! 很抱歉 JSON 对象的格式,当我更改格式时,我无法让它保持为代码。它基本上是一个对象,其中一个键值是一个对象数组。

  models.Jobs.create(json_object, function (err) {
        if (err) {return handleError(err);
        } else {
            console.log('data collected')
        }
    })

上面的代码解决了这个问题。 似乎子文档工作正常。我完全浏览了我需要的模块。

最新更新