【问题标题】:node.js:store object in mongodbnode.js:在 mongodb 中存储对象
【发布时间】:2018-06-28 12:59:59
【问题描述】:

在我的应用程序中,我想存储一个对象以供以后执行函数,基本上该对象包含 cron 作业的数据。

var cronJobObject = schedule.scheduleJob(new Date(2018, 0, 19, 15, 15, 0), function() {
    console.log("Cron started here");
});

我将该对象存储在 mongodb 中,例如 JSON.stringify(cronJobObject)

并使用cronObj = JSON.parse(obj)检索

但是当我在该对象上调用函数时,我得到函数未定义错误

我觉得我的问题和这个node.js store objects in redis类似

但解决方案对我没有帮助

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    因为 JSON.stringify(obj) 不会完全序列化你的对象,当你用 JSON.parse(obj) 解析它时你不会得到完整的初始对象:

    你可以用这样一个简单的代码来测试它:

    var schedule = require('node-schedule');
    
    
    var j = schedule.scheduleJob('43 * * * *', function() {
        console.log('hello!!!!');
    });
    
    
    x = JSON.stringify(j)
    
    console.log(j);
    console.log(x);
    console.log(JSON.parse(x));
    

    结果:

    <Job {
      job: [Function],
      callback: false,
      name: '<Anonymous Job 1>',
      trackInvocation: [Function],
      stopTrackingInvocation: [Function],
      triggeredJobs: [Function],
      setTriggeredJobs: [Function],
      cancel: [Function],
      cancelNext: [Function],
      reschedule: [Function],
      nextInvocation: [Function],
      pendingInvocations: [Function] }
    
    
    
    {"callback":false,"name":"<Anonymous Job 1>"}
    { callback: false, name: '<Anonymous Job 1>' }
    

    【讨论】:

    • 解决办法是什么
    • @iambatman 好吧,您不能在 mongoDB 中存储函数,它只存储原始数据,因此您可以将 cron 作业参数存储在 mongo 中,然后检索它们并重建您的 cron 函数。
    猜你喜欢
    • 2019-08-24
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2011-08-12
    • 2022-12-20
    • 1970-01-01
    相关资源
    最近更新 更多