相关疑难解决方法(0)

Mongoose - 如果不存在则创建文档,否则,在任何一种情况下都更新 - 返回文档

我正在寻找一种方法来重构我的部分代码,使其更短更简单,但我不太了解Mongoose,我不知道如何继续.

我正在尝试检查一个集合是否存在文档,如果它不存在,则创建它.如果确实存在,我需要更新它.在任何一种情况下,我都需要访问文档的内容.

到目前为止我设法做的是查询特定文档的集合,如果找不到,则创建一个新文档.如果找到它,我会更新它(当前使用日期作为虚拟数据).从那里我可以访问我的初始find操作中找到的文档或新保存的文档,这可行,但必须有一个更好的方法来完成我所追求的.

这是我的工作代码,没有分散注意力.

var query = Model.find({
    /* query */
}).lean().limit(1);

// Find the document
query.exec(function(error, result) {
    if (error) { throw error; }
    // If the document doesn't exist
    if (!result.length) {
        // Create a new one
        var model = new Model(); //use the defaults in the schema
        model.save(function(error) {
            if (error) { throw error; }
            // do something with the document here
        });
    }
    // If the document does exist
    else {
        // Update it …
Run Code Online (Sandbox Code Playgroud)

javascript refactoring mongoose node.js

50
推荐指数
2
解决办法
5万
查看次数

猫鼬和独特的领域

我有以下mongoose模式:

var SimSchema = new Schema({
    msisdn     : { type : String , unique : true, required : true },
    imsi       : { type : String , unique : true, required : true },
    status     : { type : Boolean, default: true},
    signal     : { type : Number },
    probe_name : { type:  String , required : true }
});
Run Code Online (Sandbox Code Playgroud)

我有unique选择msisdnimsi.

在某些情况下,这种情况得到了很好的尊重.对于以下mocha测试:

"use strict";

var app      = require('../../app');
var http     = require('http'); …
Run Code Online (Sandbox Code Playgroud)

mocha.js mongoose mongodb

39
推荐指数
1
解决办法
5万
查看次数

标签 统计

mongoose ×2

javascript ×1

mocha.js ×1

mongodb ×1

node.js ×1

refactoring ×1