猫鼬保存:保存失败,没有错误

时间:2016-11-11 21:10:27

标签: javascript node.js mongodb mongoose

我正在使用mongoose构建一个简单的应用程序来保存来自IRC频道的一些数据。 我在OVH VPS上有一个远程数据库,我可以毫无问题地访问和登录。

但是,当我尝试在其上保存一些数据时,我无法使用我的javascript代码。

以下是我要保存的数据:

"use strict"
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.Promise = global.Promise;

var UserPointDataSchema = new Schema({
                                        username: String,
                                        value: Number,
                                        channel: String,
                                        timestamp: Number
                                        });
var UserPointDataModel =  mongoose.model('UserPointData',UserPointDataSchema);


class UserPointData{
    constructor(username,value,channel){
        this.username =  username;
        this.value =  value;
        this.channel =  channel;
        this.timestamp =Date.now();

        this.mongooseModel = this.toMoogoseModel();

        return this;
    }

    toMoogoseModel(){
        return UserPointDataModel.hydrate(this);
    }

    save(){
        this.mongooseModel.save(function (err, product, numAffected) {
            if (err){
                console.log(err);
            }
            console.log(err);
            console.log(product);
            console.log(numAffected);
        });
    }
}

module.exports = UserPointData;

以下是控制台上的输出:

  

空   {username:' breci',value:1,channel:' breci',timestamp:   1478897691976}   0

  • MongoDB版本:3.2.10
  • 猫鼬版本:4.6.6

我检查了日志,没有识别问题,也没有错误。

有人知道它为什么不起作用?

1 个答案:

答案 0 :(得分:0)

通过更改toMongooseModel()方法

解决了这个问题

如果有人遇到同样的问题,这是新的:

public class TestClass
{
    public static void Test()
    {
        var baseObject = new BaseClass { Name = "BaseObject" };
        var derivedObject = new DerivedClass { Name = "DerivedObject", Index = 1 };

        using (var stream = new MemoryStream())
        {
            ProtoBuf.Serializer.Serialize(stream, baseObject);
            Debug.WriteLine(stream.Length);
            stream.Seek(0, SeekOrigin.Begin);

            // either of next two lines will throw the invalid cast exception : 
            // DerivedClass derivedObjectOut = ProtoBuf.Serializer.Deserialize<DerivedClass>(stream);
            // var objectOut = ProtoBuf.Serializer.Deserialize<DerivedClass>(stream);

            // no exception thrown but internal type of objectOut is unexpectedly BaseClass : 
            var objectOut = ProtoBuf.Serializer.Deserialize<DerivedClass>(stream);
        }
    }
}

如果有人知道为什么水合物方法不起作用,我很想知道。